中过象棋棋盘一半 马踏日 从(1,1)出发只能向右踏出,到(m,n)有多少路径

本文介绍了一个使用C语言实现的骑士走法计算器程序。该程序通过递归的方式计算在一个指定大小的棋盘上,从给定的起始位置到目标位置的所有合法路径数量。通过定义合法的骑士移动规则并检查每一步是否符合这些规则来完成路径计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值