题目大意:
在n×m棋盘上有一中国象棋中的马:
马走日字;
马只能往右走。
请你找出一条可行路径,使得马可以从棋盘的左上角走到右下角。
输入:9 5/*棋盘规模*/
1/*测试次数*/
0 0 8 4/*位置按照矩阵的下标而写*/
输出:(0,0)->(2,1)->(4,2)->(6,3)->(8,4)
分析:深度优先搜索,不断回溯,并用path[]记录下路径
#include<stdio.h>
#define N 100
int path[N],x1,y1,x2,y2,n,m;
int step[][2]={
{-2,1},{-1,2},{1,2},{2,1}};
void search(int a,int b,int cur) {
int i,x,y;
if(a==x2&&b==y2) {
x=x1,y=y1;
printf("(%d,%d)",x,y);
for(i=1;i<cur;i++) {
x+=step[path[i]][0];
y+=step[path[i]][1];
printf("->(%d,%d)",x,y);
}
printf("\n");
return;
}
for(i=0;i<4;i++){//因为一直向右走,所以路径不可能重