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>
using namespace std;
void circle(int [],int );
int main()
{int i,x,*p;
cout<<"enter the num";
cin>>i;
p=new int[i];
for(x=0;x<=i-1;++x)
p[x]=x+1;for(x=0;x<=i;++x){
if(p[x]==-33686019)
cout<<" ";
else
cout<<p[x]<<" ";}cout<<endl;
for(x=0;x<=i-1;++x)
circle(p ,i );system("pause");
}
void circle(int p[],int i)
{
int temp,x;
temp=p[0];
for(x=1;x<=i;++x)
p[x-1]=p[x];
p[i]=temp;
for(x=0;x<=i;++x)
{if(p[x]==-33686019)
cout<<"";
else
cout<<p[x]<<" ";}
cout<<endl;
}
大虾给点意见