N比较大的时候恐怕很难统计出所有的
#include <stdio.h>#define N 7
int main(){ int i, j;
for (i = 1; i <= N; i++) { for (j = i; j < N + i; j++) printf("%3d", (j - 1) % N + 1); printf("\n"); } return 0;}
回朔法倒是可以解决,只不过,效率太慢了.
那你把20个数的拉丁方阵看出来一下.
还算法不算好,但大家可以接一下。#include<stdio.h>#define N 20int main(void){
int i; for(i=1;i<=N*N;i++) (i%N+i/N>N)? printf("%2d ",i%N+i/N-N): (i==N)? printf("%2d\n",i): (i!=N&&i%N==0)? printf("%2d\n",i%N+i/N-1): printf("%2d ",i%N+i/N); return 0;}