資源簡介
跳馬問題:
設計一個國際象棋的跳馬演示程序,
基本要求:將馬隨機放進8*8的棋盤內,按馬的行走規則,每個方格進入一次.
走遍64個方格,將數字依次填入8*8個方格內,并輸出.
較高要求:1.求出從某一起點出發的多條以致全部行走路線.
2.每次選擇位置的 "最佳策略 ",盡量減少回溯次數
代碼片段和文件信息
#include?
using?namespace?std;
struct?info?
{
int?xyout;
};
const?int?dx[8]={-2-2-1-1?1?1?2?2};
const?int?dy[8]={-1?1-2?2-2?2-1?1};
int?board[8][8];
int?outlet(int?xint?y)
{
?int?ct=0;
?for(int?i=0;i<8;++i)
?{
??if(x+dx[i]<0?||?y+dy[i]<0?||?x+dx[i]>=8??
?||?y+dy[i]>=8?||?board[x+dx[i]][y+dy[i]])
??continue;
??else?++ct;
?}
?return?ct;
}//計算(xy)的出口數
void?sort(info?*pint?n)
{
?for(int?i=n-1;i>0;--i)
??if(p[i].out ??swap(p[i]p[i-1]);
??else?break;
}//按出口數由小到大排序
bool?search(int?xint?yint?step)
{
?if(board[x][y])?
?return?false;
?if(step==8*8)
?{
??board[x][y]=step;
??return?true;
?}
?else
?{
??board[x][y]=step;
??int?ij;?
??info?dir[8];
??for(i=j=0;i<8;++i)
???if(x+dx[i]<0?||?y+dy[i]<0?||?x+dx[
評論
共有 條評論