马踏棋盘回溯算法C++源代码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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< } }