69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int store[8],line[8],z[15],f[15];
int count;
int i;
void print()
{
int k;
for(k=0;k <8;k++)
printf("%d ",store[k]);
printf("\n");
count++;
}
void try(int i)
{
int j;
for(j=0;j <8;j++)
if(line[j]==0&&f[i+j]==0&&z[i-j+7]==0)
{
line[j]=1;z[i-j+7]=1;f[i+j]=1;store[i]=j;
//打个比方,假设运行到这里时,你这个函数里面的j=5 ^_^
if(i <7)
try(i+1);
//如果j是局部变量,执行完上面一句的时候,你这个函数里面的j还是等于5
//但是如果你的j是全局变量,那么运行到这里j必定等于8,因为try(i+1)函数将j改成8了,这样搞自然不合逻辑……
else print();
line[j]=0;z[i-j+7]=0;f[i+j]=0;
}
}
main()
{
try(0);
printf("total:%d",count);
system("pause");
}