还望哪位兄弟能够进来帮我一下.
本人最近碰到一个题目,实在想不出,该怎么做.求救大家了.
49 一个N*N的拉丁正方形含有整数1到N(N为1至9的整数吗?),且在任意的行或列中都不出现重复数据,一种可能的6*6拉丁正方形如下:
6 3 1 4 2 5
1 4 5 6 3 2
5 6 2 1 4 3
2 1 3 5 6 4
3 5 4 2 1 6
4 2 6 3 5 1
为了产生一个N*N的拉丁正方形的一种算法可描述如下:
1) 用整数1到N 的一种任意排列先装满第一行;
2) 把第一行看作是填充适当的整数的索引表,并用这份索引填充一个整数于其他各行的相应位置,
如上面的例子,则是把第一行的第6列的数5,填在第2行的第3列上,第3行的第1列,第4行的第4列,
第5行的第2列,第6行的第5列上;
3)使用循环移动了一个位置的第一行的第一列作为索引表去填充另一个整数。在这个例子中现在
的索引表为314256,用第1行(6 3 1 4 2 5)的第3列上的数1,分别填到第2到第6行的1,4,2,5,6各列的位置。
4) 重复步骤3,每次使用第1行的一个不同的循环次序作为索引次序作为索引表填一个整数于各行中
相应位置上,直到正方形被填满为止。
写一个程序,它读入一个正整数N,并输入一个N*N的拉丁正方形。
给出具体的算法吧...