题目要求
实现代码:
import java.util.Scanner;
public class P1002 {
public static int count=0;
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int aim_x=scanner.nextInt();
int aim_y=scanner.nextInt();
int horse_x=scanner.nextInt();
int horse_y=scanner.nextInt();
int[][] map=new int[21][21];
int[]step=new int[]{1,2,-1,-2};
int[] xDirection=new int[4];
int[] yDirection=new int[4];
for(int i=0;i<=3;i++){
xDirection[i]=horse_x+step[i];
yDirection[i]=horse_y+step[i];
}
map[horse_x][horse_y]=1;
for(int i=0;i<=3;i++){
for(int j=0;j<=3;j++) {
if(xDirection[i]>=0&&yDirection[j]>=0){
if(i%2!=j%2){
map[xDirection[i]][yDirection[j]]=1;
}
}
}
}
getPath(0,0,map,aim_x,aim_y);
System.out.println(count);
}
public static void getPath(int x,int y,int[][] map,int aim_x,int aim_y){
if(map[x][y]==0){
if(x<=aim_x&&y<=aim_y){
if(x==aim_x&&y==aim_y){
count++;
}else{
if(y+1<=aim_y){
getPath(x,y+1,map,aim_x,aim_y);
}
if(x+1<=aim_x){
getPath(x+1,y,map,aim_x,aim_y);
}
}
}
}
}
}
测试结果:
总结:
目前代码只实现了解答要求,性能方面还需要优化。
优化版本:优化版本链接