快的马
这是用贪婪法编的马的遍历。
p()用来选择出口,g()考察下个出口的出口数。
#include
#include
int m[8][8]=,a[8]=,
b[8]=;
int k=0;
int g(int x,int y)
{int x1,y1,com=0,i=0;
if(x<0x>7y<0y>7m[x][y]>0)
return(8);
else for(;i<7;i++)
{x1=x+a[i];y1=y+b[i];
if(x1>=0&&x1<8&&y1>=0&&y1<8&&m[x1][y1]==0)
com++;}
return(com);
}
p(int x,int y)
{int i,n,k,j=8;
for(i=0;i<8;i++)
{n=g(x+a[i],y+b[i]) ;
if(n { k=i;j=n;} } return(k); } f(int x,int y) {int i; if(k==64) printf("OK "); else{ i=p(x,y); m[x][y]=++k; x=x+a[i];y=y+b[i]; f(x,y); } } main() { int x,y; f(0,0); printf(" "); for(x=0;x<8;x++) {for(y=0;y<8;y++) printf("%3d",m[x][y]); printf(" ");} getch(); }
- 上一篇:课程设计之打字练习程序
- 下一篇:快速排序法!