马踏棋盘回溯算法C++源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

马踏棋盘回溯算法完整源代码(在VS2010中调试通过):

#include "stdafx.h"

#include

#include

using namespace std;

void search(int x,int y,int k,int a[8][8]);//试探函数

void output(int a[8][8]); //输出函数

int main()

{

int a[8][8]={0};

int x,y;//标记起始位置

cout<<"请输入初始坐标x、y(0-7)"<

cin>>x>>y;

while(x>7||y>7||x<0||y<0)

{

cout<<"您的输入有误,请重新输入"<

cin>>x>>y;

}

a[x][y]=1;

search(x,y,2,a);

return 0;

}

void search(int x,int y,int k,int a[8][8])

{

for(int i=x-2;i<=x+2;i++)

for(int j=y-2;j<=y+2;j++)

{

if(i>=0&&i<8&&j>=0&&j<8&&(i-x)*(i-x)+(j-y)*(j-y)==5&&a[i][j]==0) {

a[i][j]=k;

k++;

search(i,j,k,a);

a[i][j]=0;

k--;

}

}

if(k==65)

{

output(a);

system("pause");

exit(0);

}

}

void output(int a[8][8])

{

for(int i=0;i<8;i++) //在棋盘中输出每一步的位置{

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

cout<

cout<

}

}

相关文档
最新文档