奇怪,我这个样例都没过,怎么还ac了
查看原帖
奇怪,我这个样例都没过,怎么还ac了
890929
yiban202241040105楼主2023/11/5 17:00
#include<bits/stdc++.h>
const int N = 30 ;
#define read(a) {char c;while((c=getchar())>47) a=a*10+(c^48);}
using namespace std;
int n, m, k, r;
int v, p;
int  ans =0;
int g[N];
int vis;
long long dp[N][N];

int main()
{
	memset(dp, 0, sizeof(dp));
	cin >> n >> m;
	long long  mx, my;
	cin >> mx >> my;
	n += 2, m += 2;
	mx += 2, my += 2;
	dp[mx][my] = -1;
	dp[mx - 2][my + 1] = -1;
	dp[mx - 1][my + 2] = -1;
	dp[mx + 1][my + 2] = -1;
	dp[mx + 2][my + 1] = -1;
	dp[mx + 2][my - 1] = -1;
	dp[mx + 1][my - 2] = -1;
	dp[mx - 1][my - 2] = -1;
	dp[mx - 2][my - 1] = -1;
	for (int i = 2; i <= n; i++)                
	{
		for (int j = 2; j <= m; j++)
		{
			if (i == 0 || i == 1 || i == n + 1 || i ==n + 2 || j == 0 || j == 1 || j == m + 1 || j == m + 2)
			{
				dp[i][j] = -1;
			}
		}
	}
	dp[2][2]=1;
	for (int i = 2; i <= n; i++)
	{
		for (int j = 2; j <= m; j++)
		{
			if (dp[i][j] == -1||(i==2&&j==2))
				continue;
			if(dp[i-1][j]!=-1)
			dp[i][j] += dp[i - 1][j];
			if (dp[i][j - 1] != -1)
			dp[i][j] += dp[i][j - 1];
		}
	}
	cout << dp[n][m] << endl;
	return 0;
}

2023/11/5 17:00
加载中...