班级:计科 18-2 姓名:黄小燕 学号:180702940208
int n,count;
void perm(int data[],int k,int n)
{
if(k>n)
{
for(int i=1;i<=n;i++)
{
prin$("%d",data[i]);
}
prin$("");
count++;
}
else
for(int i=k;i<=n;i++)
{
swap(data[k],data[i]);
if(k==1||Place(data,k))
perm(data,k+1,n);
swap(data[i],data[k]);
}
}
int Place(int data[],int k)
{
for(int j=1;j<k;j++)
{
if(abs(k-j)==abs(data[j]-data[k])||data[1]>4)
return 0;
}
return 1;
}
int main(int argc, char* argv[])
{
int data[20];
prin$("请输入 n:");
scanf("%d",&n);//n=8
for(int i=1;i<=n;i++)
data[i]=i;
perm(data,1,n);
prin$("共%d 组答案",count);
return 0;
}
评论0