/* 4. 在N行N列的数阵中, 数K(1〈=K〈=N)在每行和每列中出现且仅 出现一次,这样的数阵叫N阶拉丁方阵。例如下图就是一个五阶拉丁方阵。 编一程序,从键盘输入N值后,打印出所有不同的N阶拉丁方阵,并统计个数。 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 */ #include <iostream.h> int a[100][100]; void fun(int n) { int i,j; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { int k = (i+j-1)%n; if(k==0) k=n; a[i][j] = k; } } for(i=1; i<=n; i++) { for(j=1; j<=n; j++) cout<<a[i][j]<<" "; cout<<endl; } } int main() { int n; while(cout<<"请输入N:",cin>>n) { fun(n); cout<<endl; } }