P1362 - 【提高】马的遍历 - CSPOJ
#include<bits/stdc++.h>
using namespace std;
char a[20][20];//地图
int n,m;//行列
int cnt;//答案数
bool flag[20][20];
int dx[]={2,1,-1,-2};//行变化
int dy[]={1,2,2,1};//列变化
struct node
{
int x,y;
}path[400];
void dfs(int step,int sx,int sy)
{
if(sx==4&&sy==8)
{
cout<<++cnt<<":0,0";
for(int i=1;i<step;i++)
{
cout<<"->"<<path[i].x <<","<<path[i].y ;
}
cout<<endl;
return;
}
for(int i=0;i<4;i++)
{
int tx=sx+dx[i];
int ty=sy+dy[i];
if(tx>=0&&tx<=4&&ty>=0&&ty<=8)
{
//标记
path[step].x =tx;
path[step].y =ty;
//调用
dfs(step+1,tx,ty);
}
}
}
int main()
{
ios::sync_with_stdio(0);
dfs(1,0,0);
return 0;
}