#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; } 不知道为什么出来的棋盘都一样啊
2 回答
- 2 回答
- 1 关注
- 1438 浏览
添加回答
举报
0/150
提交
取消