60分求助
查看原帖
60分求助
1293799
shaoningyuan楼主2024/5/9 13:35

第一、五个样例有误,求大佬看看

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long mx,my,bx,by;
long long dx[8]={1,1,-1,-1,2,2,-2,-2};
long long dy[8]={2,-2,2,-2,1,-1,1,-1};
bool vis[21][21];
long long f[21][21];
signed main()
{
	memset(vis,false,sizeof(vis)); 
    cin>>bx>>by>>mx>>my;
    for(long long i=0;i<8;i++)
    {
    	long long xx=dx[i]+mx;
    	long long yy=dy[i]+my;
    	if(xx>=0&&yy>=0)
    	{
    		vis[xx][yy]=true;    		
		}
	}
	vis[mx][my]=true;
	vis[0][0]=true;
	f[0][0]=1;
	for(long long j=1;j<=bx;j++)
	{
		if(vis[0][j]==1)break;
		f[0][j]=1;
	}
	for(long long j=1;j<=by;j++)
	{
		if(vis[j][0]==1)break;
		f[j][0]=1;
	}
	for(long long i=1;i<=bx;i++)
	{
		for(long long j=1;j<=by;j++)
		{
			if(vis[i][j]==false)
			{
				f[i][j]=f[i-1][j]+f[i][j-1];
			}
		}
	}
	cout<<f[bx][by];
    return 0;
}

2024/5/9 13:35
加载中...