Java 骑士周游
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 骑士周游相关的知识,希望对你有一定的参考价值。
把c语言中的 国际象棋中的骑士周游 改为 JAVA 但不知有什么问题?
public class Knight
int i,j,min;
int count[]=8,8,8,8,8,8,8,8;
int num[]=0,0,0,0,0,0,0,0;
int col[]=2,1,-1,-2,-2,-1,1,2;
int row[]=-1,-2,-2,-1,1,2,2,1;
int a[][]=new int[8][8];
int Ma[][] = new int[65][3];
int top=0;
public Knight(int x,int y)
i=x;
j=y;
top=0;
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
a[i][j]=0;
for(int i = 0;i < 65;i++)
for(int j = 0;j < 3;j++)
Ma[i][j] = 0;
push(a,i,j,0);
public void push(int a[][],int i,int j,int m)
Ma[top][0]=i;
Ma[top][1]=j;
Ma[top][2]=m;
a[i][j]=++top;;
public void Start()
int ti,tj,temp1=0,temp=0,flag=0;
while(top<64)
ti=i;tj=j;temp1=0;flag=0;
for(int t=temp;t<8;t++,temp1++)
ti+=row[t];tj+=col[t];
if(judge(ti,tj,a))
count[temp1]=jump(ti,tj,a);
num[temp1]=t;
flag=1;
ti-=row[t];tj-=col[t];
if(flag==1)
min=sort(count,num);
ti+=row[min];tj+=col[min];
push(a,ti,tj,min);
i=ti;j=tj;temp=0;
else
temp=pop(a);
i=Ma[top-1][0];
j=Ma[top-1][1];
System.out.println();
disp(a);
public int sort(int a[],int b[])
int Min=a[0],tt=0;
for(int k=1;k<8;k++)
if(Min>a[k]&&a[k]>-1&&a[k]<8)
Min=a[k];
tt=b[k];
return tt;
public int pop(int a[][])
int ttemp;
top--;
a[Ma[top][0]][Ma[top][1]]=0;
Ma[top][0]=0;
Ma[top][1]=0;
ttemp=Ma[top][2]+1;
Ma[top][2]=0;
return ttemp;
public boolean judge(int i,int j,int a[][])
if(i>=0&&j>=0&&i<8&&j<8&&a[i][j]==0)
return true;
return false;
public void disp(int a[][])
for(int ii=0;ii<8;ii++)
for(int jj=0;jj<8;jj++)
System.out.printf("%4d", a[ii][jj]);
System.out.println();
public int jump(int i,int j,int a[][])
int count=0,tii=i,tjj=j;
for(int t=0;t<8;t++)
tii+=row[t];tjj+=col[t];
if(judge(tii,tjj,a))
count++;
tii-=row[t];tjj-=col[t];
return count;
================================================================
import java.util.Random;
public class KnightTest
public static void main(String args[])
Random rand = new Random();
int x=1+rand.nextInt(8);
int y=1+rand.nextInt(8);
Knight knight = new Knight(x-1, y-1);
knight.Start();
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
以上是关于Java 骑士周游的主要内容,如果未能解决你的问题,请参考以下文章