問(wèn)題描述
略
#include<iostream>
using namespace std;
int dx[5]={0,2,1,-1,-2};
int dy[5]={0,1,2,2,1};//增量數(shù)組
int a[1000][3];//記錄路徑
int m,n;
bool t;
void printx(int tot){
for (int i=1;i<tot;i++)
cout<<"("<<a[i][1]<<","<<a[i][2]<<")->";
cout<<"("<<a[tot][1]<<","<<a[tot][2]<<")"<<endl;
}
void tryx(int step){
if(a[step-1][1]==m&&a[step-1][2]==n){
printx(step-1);
t=true;
return;
}
for (int i=1;i<=4;i++){ //循環(huán)調(diào)用增量數(shù)組
int ik=a[step-1][1]+dx[i];
int jk=a[step-1][2]+dy[i];
if(ik>=0&&ik<=m&&jk>=0&&jk<=n&&t==false){
a[step][1]=ik;
a[step][2]=jk;//標(biāo)記
tryx(step+1);
a[step][1]=0;
a[step][2]=0;//回溯
}
}
}
int main(){
cin>>m>>n;
t=false;//防止輸出多條路徑,需靠t停止搜索
a[1][1]=0;
a[1][2]=0;//馬從(0,0)出發(fā)
tryx(2);
return 0;
}