1. 程式人生 > >中過象棋棋盤一半 馬踏日 從(1,1)出發只能向右踏出,到(m,n)有多少路徑

中過象棋棋盤一半 馬踏日 從(1,1)出發只能向右踏出,到(m,n)有多少路徑

# include<stdio.h>
# include<math.h>
# define M 9
# define N 5
int a[10]={1},b[10]={1},sum=0,m,p;//a[]儲存橫座標,b[]儲存縱座標
int check(int n){

	if((a[n]-a[n-1]==1&&abs(b[n]-b[n-1])==2)||(a[n]-a[n-1]==2&&abs(b[n]-b[n-1])==1)){
		return 1;}//合法
else return 0;//不合法
}
void put(int n){
int i,j;
for(i=1;i<=M;i++){
	for(j=1;j<=N;j++){
		a[n]=i;
		b[n]=j;
		if(check(n)){
	    if(a[n]==m&&b[n]==p) sum++;
		else put(n+1);
}
}
}
}
int main(){
	scanf("%d%d",&m,&p);
put(1);
printf("%d\n",sum);
}