java骑士巡游问题

nn970510 2016-10-22 01:28:01
一个骑士巡游的问题,在一个8*8棋盘上骑士要用类似于中国象棋里马走日的方式到每一个格子,不可以走已经走过的格子。底下是我的代码,我知道问题有可能出在当没有格子可走时代码不会回溯,但是小弟真的不知道应该怎么改,求大神们帮着改改
public class KT {

public static void main(String[] args) {

int n = args.length == 1 ? Integer.parseInt(args[0]) : 8;

board = new int[n][n];


knightsrun(0,0,1);
}

public static boolean valid(int x, int y){

if (0<=x && x<=7 && 0<=y && y<=7 && board[x][y] == 0){
return true;
}
return false;
}


public static void knightsrun(int row, int column, int step){

int jump [][] ={
{1,2},{2,1},{-1,2},{-2,1},{1,-2},{2,-1},{-1,-2},{-2,-1}
};

board[row][column]=step;
if (step == 64){
print();
return;
}

for (int i = 0; i < jump.length; ++i){
int[] v = jump[i];
int nextx = row + v[0];
int nexty = row + v[1];

if (valid(nextx, nexty)){
knightsrun(nextx, nexty, step+1);
}
}
}

public static void print(){
for(int[] i : board){
int x = i[i.length-1];
for (int j : i){
System.out.print(board[x][j]);
}
System.out.println();
}
}
public static int[][] board;

}
...全文
254 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nn970510 2016-10-22
  • 打赏
  • 举报
回复
第15行那个board[x][y] == 0是!=0,抱歉写错了

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧