3,4没过,难受啊
查看原帖
3,4没过,难受啊
639824
phpone楼主2024/3/21 21:32
#include <bits/stdc++.h>
using namespace std;
#define ll long long
bool is_valid(int a,int b,int m,int n)
{
	if(a>=0&&b>=0&&a<=m&&b<=n)return true;
	return false;
}

int main()
    {
int m,n,a,b;
 cin>>m>>n>>a>>b;
 ll res[m+1][n+1];
 int num[m+1][n+1];
 for(int i=0;i<=m;i++)
 {
 	for(int j=0;j<=n;j++)
 	{
 		num[i][j]=0;
	 }
 }
if(a-1,b-2,m,n)num[a-1][b-2]=1;
if(a+1,b-2,m,n)num[a+1][b-2]=1;
if(a-2,b-1,m,n)num[a-2][b-1]=1;
if(a+2,b-1,m,n)num[a+2][b-1]=1;
if(a-2,b+1,m,n)num[a-2][b+1]=1;
if(a-1,b+2,m,n)num[a-1][b+2]=1;
if(a+1,b+2,m,n)num[a+1][b+2]=1;
if(a+2,b+1,m,n)num[a+2][b+1]=1;
if(a,b,m,n)num[a][b]=1;

bool flag1=1,flag2=1; 
 for(int i=0;i<=m;i++)
 {
 	for(int j=0;j<=n;j++)
 	{
 		if(i==0&&num[i][j]==1)flag1=0;
 		if(j==0&&num[i][j]==1)flag2=0;
 		if(i==0&&num[i][j]==0)
 		{
 			if(flag1)res[i][j]=1;
 			else res[i][j]=0;
 			continue;
		 }
		 if(j==0&&num[i][j]==0)
 		{
 			if(flag2)res[i][j]=1;
 			else res[i][j]=0;
 			continue;
		 }
		 if(num[i][j]==1)res[i][j]=0;
		 else res[i][j]=res[i-1][j]+res[i][j-1];
	 }
 }
 cout<<res[m][n];
		
 
  } 
	
明明开了longlong ,而且也考虑到初始化马能跳到的地方后面全部过不了
2024/3/21 21:32
加载中...