#3 #4爆0求助
查看原帖
#3 #4爆0求助
430409
Coros_Trusds楼主2021/5/1 08:56

代码:

//2021/4/30

#include <cstdio>
 
using namespace std;

const long long INF=(1ll<<40);

const int dx[15]={2,1,-1,-2,-2,-1,1,2};

const int dy[15]={1,2,2,1,-1,-2,-2,-1};

long long map[505][505];

int n,m,a,b;//20 20 4 0

int main()
{
	fscanf("%d%d%d%d",&n,&m,&a,&b);
	
	for(register int i=0;i<=m;i++)
	{
		map[0][i]=1ll;
	}
	
	for(register int i=0;i<=n;i++)
	{
		map[i][0]=1ll;
	}
	
	map[a][b]=INF;
	 
	for(register int i=0;i<8;i++)
	{
		int nx=a+dx[i];
		
		int ny=b+dy[i];
		
		if(nx>=0 && nx<=n && ny>=0 && ny<=m )
		{
			map[nx][ny]=INF;
		}
	} 
	
	for(register int i=1;i<=n;i++)
	{
		for(register int j=1;j<=m;j++)
		{
			if(map[i][j]==INF)
			{
				continue;
			}
			
			else if(map[i][j]!=INF && map[i-1][j]!=INF && map[i][j-1]!=INF)
			{
				map[i][j]=(long long)((long long)(map[i-1][j])+(long long)(map[i][j-1]));
			}
			
			else if(map[i][j]!=INF && map[i-1][j]==INF && map[i][j-1]!=INF)
			{
				map[i][j]=(long long)(map[i][j-1]);
			} 
			
			else if(map[i][j]!=INF && map[i-1][j]!=INF && map[i][j-1]==INF)
			{
				map[i][j]=(long long)(map[i-1][j]);
			}
		}
	} 
	
	printf("%lld\n",map[n][m]);
	
	return 0;
}
2021/5/1 08:56
加载中...