#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;? }?不知道為什么出來的棋盤都一樣啊
關(guān)于馬在中國象棋的遍歷問題
weibo_殤雨916_0
2016-04-08 13:28:48