大佬们,可不可以帮我看看我哪里错了
查看原帖
大佬们,可不可以帮我看看我哪里错了
163319
a2539660209楼主2020/9/21 18:15
#include<iostream>
#include<cstring>
using namespace std;
const int jump_x[]={0,2,2,1,1,-1,-1,-2,-2};
const int jump_y[]={0,1,-1,2,-2,2,-2,1,-1};
bool sign[40][40]={0};
long long route[40][40];
int main()
{
	int b_x,b_y,horse_x,horse_y;
	cin>>b_x>>b_y>>horse_x>>horse_y;
	for(int i=0;i<9;i++)
		{
			if(horse_x-jump_x[i]>=0&&horse_x-jump_x[i]<=b_x&&horse_y-jump_y[i]>=0&&horse_y-jump_y[i]<=b_y)
			{
				sign[horse_x-jump_x[i]][horse_y-jump_y[i]]=1;
			}
		}
	for(int i=0;i<=b_y;i++)
	{
		if(sign[0][i]!=1)	
			route[0][i]=1;
		else
			route[0][i]=0;
	}
	for(int i=0;i<=b_x;i++)
	{
		if(sign[i][0]!=1)	
			route[i][0]=1;
		else
			route[i][0]=0;
	}
	for(int i=1;i<=b_x;i++)
		for(int j=1;j<=b_y;j++)
		{
			if(sign[i][j]!=1)
				route[i][j]=route[i][j-1]+route[i-1][j];
			else
				route[i][j]=0;
		}
	cout<<route[b_x][b_y];
	return 0;
}

就是第三组数据 20 20 0 1 我的输出是 57050531010 答案是 56477364570

2020/9/21 18:15
加载中...