C++过河卒,求助!!!
查看原帖
C++过河卒,求助!!!
748943
a2505354617A楼主2022/7/10 15:40
#include<iostream>
#include<stdlib.h>
using namespace std;

void judge(int array[20][20],int c,int d)//马的控制点 
{
	if((c-2>=0)&&(d-1>=0))
		array[c-2][d-1]=1;
	if((c-2>=0)&&(d+1<=20))
		array[c-2][d+1]=1;
	if((c-1>=0)&&(d-2>=0))
		array[c-1][d-2]=1;
	if((c-1>=0)&&(d+2<=20))
		array[c-1][d+2]=1;
	if((c+1<=20)&&(d-2>=0))
		array[c+1][d-2]=1;
	if((c+1<=20)&&(d+2<=20))
		array[c+1][d+2]=1;
	if((c+2<=20)&&(d-1>=0))
		array[c+2][d-1]=1;
	if((c+2<=20)&&(d+1<=20))
		array[c+2][d+1]=1;
 } 

int count(int array[20][20],int a,int b,int m,int n)//递归求总数 
{
	if(array[m][n]==1||m>a||n>b){ //排除马控制点和出界点 
		return 0;
	}else if((m==a)&&(n==b)){     //到达点B 
		return 1;
	}else{
		return count(array,a,b,m+1,n)+count(array,a,b,m,n+1);
	}
}

int main()
{
	int array[20][20];
	for(int i=0;i<20;i++){
		for(int j=0;j<20;j++){
			array[i][j]=0;
		}
	}
	int a,b,c,d,z,m=0,n=0;
	cin>>a>>b>>c>>d;
	judge(array,c,d);
	z=count(array,a,b,m,n);
	cout<<z;
	return 0;
}
2022/7/10 15:40
加载中...