马踏棋盘问题
思路 : 使用回溯算法遍历强行算出来
描述 : 在找到结果后会直接退出 可以去掉exit语句可以找到所有符合条件的解
package hourse;
import java.util.Arrays;
public class Hourse {
private static final int size = 6;
public void walk(int x,int y,int t,int[][] qipan){
if(x >= size || x < 0
|| y >= size || y < 0){
return;
}
if(qipan[x][y]==1 && t==size*size+1){
for (int[] aQipan : qipan) {
System.out.println(Arrays.toString(aQipan));
}
System.out.println();
System.exit(0);
}
if(qipan[x][y]!=0){
return;
}
qipan[x][y] = t;
walk(x+2,y+1,t+1,qipan);
walk(x+2,y-1,t+1,qipan);
walk(x-2,y+1,t+1,qipan);
walk(x-2,y-1,t+1,qipan);
walk(x+1,y+2,t+1,qipan);
walk(x+1,y-2,t+1,qipan);
walk(x-1,y+2,t+1,qipan);
walk(x-1,y-2,t+1,qipan);
qipan[x][y] = 0;
}
public static void main(String[] args) {
Hourse hourse = new Hourse();
int[][] qipan = new int[size][size];
hourse.walk(0,5,1,qipan);
}
}