?? 皇后問題遞歸求解.txt
字號:
#include<cstdlib>
#include<iostream>
using namespace std;
const int MAX = 8; //棋子數及其棋盤大小MAX*MAX
int board[MAX]; //存放結果
bool check_cross( int n)
{
//對從0到n個皇后進行檢驗
int i;
for( i =0;i < n;i++)
{
if(board[i] == board[n] || ((n-i) == abs(board[i]-board[n]))) //這里不要寫錯了
return 1; //說明有cross的情況存在
}
return 0;
}
void show_result()
{
int i =0;
for( i = 0; i < MAX; i++)
cout<<board[i]<<" ";
cout<<endl;
}
void put_chess( int n)
{
//對第n行放置一棵皇后.
int i;
for(i=0;i<MAX;i++) //循環試探
{
board[n] = i;
if(!check_cross(n))//如果符合規則,即沒有皇后在同一直線上
{
if( n == MAX-1 )
show_result();
else
put_chess(n+1); //放下一顆棋子
}
}
}
void main()
{
put_chess(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -