C語(yǔ)言實(shí)現(xiàn)判斷素?cái)?shù)">例16:C語(yǔ)言實(shí)現(xiàn)判斷素?cái)?shù)
684
2022-05-28
//這個(gè)問(wèn)題的原理是,在一個(gè)四成四的表格中,順序去放皇后,一個(gè)一個(gè)格子去試,每種情況都走一遍,結(jié)果就出來(lái)了
#include
#define MAX 200
#define Empty 0
#define Full 1
#define N 8
unsigned char qipan[N][N][N]={MAX};//初始化8張棋盤(pán)表示每下一步的
void input(int i);
int count = 0;
int main()
{
input(0);
getchar();
return0;
}
void input(int i)
{
intx=0,y=0;
intp=0,q=0;
int flag =0;
//初始化當(dāng)前棋盤(pán)
if(i!=0)
{
for(x=0;x
{
for(y=0;y
{
qipan[i][x][y] = qipan[i-1][x][y];
}
}
}
else
{
for(x=0;x
{
for(y=0;y
{
qipan[i][x][y] = MAX;
}
}
}
//遞歸結(jié)束
if(i==N)
{
count++;
for(x=0;x
{
for(y=0;y
{
printf("%d ",qipan[i-1][x][y]);
}
printf("\n");
}
printf("%d\n",count);
return;
}
for(y=0;y
{
//找到空位
if(qipan[i][i][y]==MAX)
{
//另其為1
qipan[i][i][y] = 1;
//前后左右上下都置為0
for(p=0;p
{
for(q=0;q
{
if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))
if(qipan[i][p][q] == MAX)
qipan[i][p][q] = 0;
}
}
if(flag != -1)
{
//找下一個(gè)
input(i+1);
}
//將棋盤(pán)變回本層原樣
for(p=0;p
{
for(q=0;q
{
if(i!=0)
qipan[i][p][q] = qipan[i-1][p][q];
else
qipan[i][p][q] = MAX;
}
}
flag =0;
}
}
//找不到空位結(jié)束
return;
}
C 語(yǔ)言
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。