题目链接↑
AC代码 ↓
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
struct node{
int h;//行
int l;//列
}path[N];
//变化数组 向右走的四个方向
int dl[]={ 1, 2, 2, 1} ;
int dh[]={ 2, 1, -1,-2} ;
int res;
void dfs(int sh,int sl,int step){//这一步的起点 将要走的下一步
//边界
if(sh == 4 && sl==8){
cout<<++res<<":0,0";
for(int i = 1;i<step;i++)
cout<<"->"<<path[i].h<<","<<path[i].l;
cout<<endl;
return;
}
//遍历所有可能
for(int i = 0;i<=3;i++){
//下一个点
int nh=sh+dh[i];
int nl=sl+dl[i];
//判断下一个点
if(nh>=0&&nl>=0&&nh<=4&&nl<=8){
path[step].h=nh;
path[step].l=nl;
dfs(nh,nl,step+1);
}
}
}
int main() {
dfs(0,0,1);
return 0;
}