SRLK游戏

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

void eightqueen(int a[][99],int n);

void print(int a[][99]);

int up(int a[][99],int row,int col);

int down(int a[][99],int row,int col);

int left(int a[][99],int row,int col);

int right(int a[][99],int row,int col);

int num = 0;

主()

{

int a[99][99]={0},n;//将皇后的位置放在二维数组中,其中a[i][j]=1表示有皇后。

eightqueen(a,0);

系统(“暂停”);

返回0;

}

Void print(int a[][99]) //输出一个合理的目前要走的路。

{

int i,row,col

printf("案例%d\n ",编号);

for(row = 0;row & lt8;row++)

{

for(col = 0;col & lt8;col++)

{

printf("%d ",a[row][col]);

}

printf(" \ n ");

}

printf(" \ n ");

}

Void八皇后(int a [] [99],int row)//通过回溯计算八皇后的移动。

{

int col,I;

for(col = 0;col & lt=7;col++)

{

//判断前方位置是否为合理位置。

if ((up(a,row,col)= = 0)& amp;& amp(down(a,row,col)= = 0)& amp;& amp(left(a,row,col)= = 0)& amp;& amp(right(a,row,col)==0)

{

a[row][col]= 1;//如果是,将当前位置设置为1(放一个皇后)。

If(row==7) //八个皇后都排好了,输出当前情况。

{

num++;

打印(一份);

}

其他

{

eightqueen(a,行+1);//将下一个皇后放在+1行。

}

a[行][列]= 0;

}

}

}

//判断同线是否有其他皇后。

int up(int a[][99],int row,int col)

{

int I;

for(I = 0;我& lt8;i++)

{

if(a[i][col]==1)

{

返回1;

}

}

返回0;

}

//判断同一条线上是否有其他皇后。

int down(int a[][99],int row,int col)

{

int I;

for(I = 0;我& lt8;i++)

{

if(a[row][i]==1)

{

返回1;

}

}

返回0;

}

//从左上到右下判断停靠线上是否有其他皇后。

int left(int a[][99],int row,int col)

{

int I;

for(I = 0;我& lt8;i++)

{

if(((row+I)& lt;8)& amp;& amp((col+I)& lt;8))

{

if(a[row+i][col+i]==1)

{

返回1;

}

}

if(((row-I)& gt;= 0)& amp;& amp((col-I)& gt;=0))

{

if(a[row-i][col-i]==1)

{

返回1;

}

}

}

返回0;

}

//从左下到右上判断停靠线上是否有其他皇后。

int right(int a[][99],int row,int col)

{

int I;

for(I = 0;我& lt8;i++)

{

if(((row+I)& lt;8)& amp;& amp((col-I)& gt;=0)) //

{

if(a[row+i][col-i]==1)

{

返回1;

}

}

if(((row-I)& gt;= 0)& amp;& amp((col+I)& lt;8)) //这里的判断有问题。

{

if(a[row-i][col+i]==1)

{

返回1;

}

}

}

返回0;

}