#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;
}
不知道为什么出来的棋盘都一样啊
相关分类