//将棋盘上的每个位置都走一遍
public class Mataqipan {
public int zou(int position[][],int m,int n,int count){
position[m][n]=count;
System.out.println(count);
if(count==64){
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
System.out.print(position[i][j]+" ");
}
System.out.println();
}
return 0;
}
else{
//向左上走
if(canZou(position,m+2,n+1)){
count=count+1;
//position[m+2][n+1]=count;
zou(position,m+2,n+1,count);
position[m+2][n+1]=0;
count = count-1;
}
if(canZou(position,m-1,n-2)){
count=count+1;
// position[m-1][n-2]=count;
zou(position,m-1,n-2,count);
position[m-1][n-2]=0;
count = count-1;
}
if(canZou(position,m-2,n-1)){
count=count+1;
//position[m-2][n-1]=count;
zou(position,m-2,n-1,count);
position[m-2][n-1]=0;
count = count-1;
}
if(canZou(position,m+1,n-2)){
count=count+1;
//position[m+1][n-2]=count;
zou(position,m+1,n-2,count);
position[m+1][n-2]=0;
count = count-1;
}
if(canZou(position,m+2,n-1)){
count=count+1;
//position[m+2][n-1]=count;
zou(position,m+2,n-1,count);
position[m+2][n-1]=0;
count = count-1;
}
if(canZou(position,m-1,n+2)){
count=count+1;
//position[m-1][n+2]=count;
zou(position,m-1,n+2,count);
position[m-1][n+2]=0;
count = count-1;
}
if(canZou(position,m-2,n+1)){
count=count+1;
//position[m-2][n+1]=count;
zou(position,m-2,n+1,count);
position[m-2][n+1]=0;
count = count-1;
}
if(canZou(position,m+1,n+2)){
count=count+1;
//position[m+1][n+2]=count;
zou(position,m+1,n+2,count);
position[m+1][n+2]=0;
//count = count-1;
}
//if(canZou(position,m+2,n+1)){
// count=count+1;
//position[m+2][n+1]=count;
// zou(position,m+2,n+1,count);
// position[m+2][n+1]=0;
//count = count-1;
// }
}
return count;
}
public boolean canZou(int a[][],int i,int j){
if(i<0||j<0||i>7||j>7||a[i][j]!=0){
return false;
}
else{
return true;
}
}
public static void main(String[] args){
Mataqipan ma = new Mataqipan();
int position[][] = new int[8][8];
ma.zou(position,2,0,1);
}
}
public class Mataqipan {
public int zou(int position[][],int m,int n,int count){
position[m][n]=count;
System.out.println(count);
if(count==64){
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
System.out.print(position[i][j]+" ");
}
System.out.println();
}
return 0;
}
else{
//向左上走
if(canZou(position,m+2,n+1)){
count=count+1;
//position[m+2][n+1]=count;
zou(position,m+2,n+1,count);
position[m+2][n+1]=0;
count = count-1;
}
if(canZou(position,m-1,n-2)){
count=count+1;
// position[m-1][n-2]=count;
zou(position,m-1,n-2,count);
position[m-1][n-2]=0;
count = count-1;
}
if(canZou(position,m-2,n-1)){
count=count+1;
//position[m-2][n-1]=count;
zou(position,m-2,n-1,count);
position[m-2][n-1]=0;
count = count-1;
}
if(canZou(position,m+1,n-2)){
count=count+1;
//position[m+1][n-2]=count;
zou(position,m+1,n-2,count);
position[m+1][n-2]=0;
count = count-1;
}
if(canZou(position,m+2,n-1)){
count=count+1;
//position[m+2][n-1]=count;
zou(position,m+2,n-1,count);
position[m+2][n-1]=0;
count = count-1;
}
if(canZou(position,m-1,n+2)){
count=count+1;
//position[m-1][n+2]=count;
zou(position,m-1,n+2,count);
position[m-1][n+2]=0;
count = count-1;
}
if(canZou(position,m-2,n+1)){
count=count+1;
//position[m-2][n+1]=count;
zou(position,m-2,n+1,count);
position[m-2][n+1]=0;
count = count-1;
}
if(canZou(position,m+1,n+2)){
count=count+1;
//position[m+1][n+2]=count;
zou(position,m+1,n+2,count);
position[m+1][n+2]=0;
//count = count-1;
}
//if(canZou(position,m+2,n+1)){
// count=count+1;
//position[m+2][n+1]=count;
// zou(position,m+2,n+1,count);
// position[m+2][n+1]=0;
//count = count-1;
// }
}
return count;
}
public boolean canZou(int a[][],int i,int j){
if(i<0||j<0||i>7||j>7||a[i][j]!=0){
return false;
}
else{
return true;
}
}
public static void main(String[] args){
Mataqipan ma = new Mataqipan();
int position[][] = new int[8][8];
ma.zou(position,2,0,1);
}
}