/*构造N*N阶的拉丁方阵,使方阵每一行和每一列中数字1到N只出现一次
*/
#include<stdio.h>
#define N 6int main()
{
int i, j, k, t;
for(j = 0; j < N; j++) //构造N个方阵
{
for(i = 0; i < N; i++) //一个方阵有N行
{
t = (i + j); //第几个方阵的第几行的第一个元素
for(k = 0; k < N; k++)
{
printf("%d", (k + t) % N + 1);//将第一个元素依次加一,形成循环,从而达到不同数的目的
}
printf("\n");
}
printf("\n");
}
return 0;
}
123456
234561
345612
456123
561234
612345
234561
345612
456123
561234
612345
123456
345612
456123
561234
612345
123456
234561
456123
561234
612345
123456
234561
345612
561234
612345
123456
234561
345612
456123
612345
123456
234561
345612
456123
561234