當前位置:編程學習大全網 - 源碼下載 - 八皇後問題求解的C語言程序的實現

八皇後問題求解的C語言程序的實現

這是個前不久,我為別人寫的壹個代碼;

八皇後問題***有92種解;

以下代碼是解決:對於固定壹個皇後位置,輸出所有可能情況.

如果這不適合妳的答案妳可以,稍微改改的哦~~

代碼如下:

#include "stdio.h"

bool board[8][8]={0};

int num=0; //滿足條件的個數

int inix,iniy; //輸入壹個皇後的初始位置

void output() //輸出

{

int i, j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

{

if(!board[i][j]) printf("■ ");

else printf("◆ ");

}

printf("\n");

}

num++;

printf("\n\n");

return ;

}

bool check(int x,int y) //判斷是否能放

{

int i, j ;

for(i=0; i<8 ; i++)

{

if(board[i][y]==1) return false;

}

for(i=0;i<8;i++)

{

if(board[x][i]==1) return false;

}

i=x; j=y;

while(i>0 && j>0 ) { i--; j--; }

for(;i<8 && j<8 ; i++,j++)

if(board[i][j]==1) return false;

i=x; j=y;

while(i>0 && j<7 ) {i--;j++;}

for(;i<8 && j>=0 ; i++ ,j--)

if(board[i][j]==1) return false ;

return true ;

}

void search(int x,int num) // 搜索函數

{

int i;

if(num>=8) { output(); return ;}

if(x==inix-1) search(inix,num+1);

else

{

for(i=0;i<8;i++)

{

if(check(x,i))

{

board[x][i]=1;

search(x+1,num+1);

board[x][i]=0;

}

}

}

return ;

}

int main()

{

scanf("%d %d",&inix,&iniy);

board[inix-1][iniy-1] = 1 ;

search(0,0);

printf("%d\n",num);

return 0;

}

例如:

輸入 : 1 1

輸出 :

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ◆ ■ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ■ ◆ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■

◆ ■ ■ ■ ■ ■ ■ ■

■ ■ ■ ■ ■ ■ ◆ ■

■ ■ ■ ■ ◆ ■ ■ ■

■ ■ ■ ■ ■ ■ ■ ◆

■ ◆ ■ ■ ■ ■ ■ ■

■ ■ ■ ◆ ■ ■ ■ ■

■ ■ ■ ■ ■ ◆ ■ ■

■ ■ ◆ ■ ■ ■ ■ ■

4

  • 上一篇:Owl推理源代碼
  • 下一篇:電信網碼號資源管理辦法的第五章罰則
  • copyright 2024編程學習大全網