猿问

关于马在中国象棋的遍历问题

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int m,n;//棋盘大小

int c[100][100];

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

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


int judge(int x,int y)//判断是否在棋盘上 

{

if(x>0&&x<=m&&y>0&&y<=n)

return 1;

else

return 0;

 } 

void print()

{

int i,j;

static int count=0;

printf("case:%d",++count);

printf("\n");

c[1][1]=1;

for(i=1;i<=m;i++)

{

for(j=1;j<=n;j++)

{

printf("%d\t",c[i][j]);

}printf("\n");

}printf("\n\n");

}

void dfs(int x,int y,int step)

{

int j;

for(j=0;j<8;j++)

{

x=x+dx[j];

y=y+dy[j];

if(judge(x,y)==1){

c[x][y]=step;

}

if(step==m*n)

{

print();

}

else

{

dfs(x,y,step+1);

c[x][y]=0;

}

}

 }


 int main()

 {

  scanf("%d%d",&m,&n);

  dfs(1,1,1);

  return 0;

  } 

不知道为什么出来的棋盘都一样啊


weibo_殇雨916_0
浏览 1439回答 2
2回答
随时随地看视频慕课网APP
我要回答