萌新,妹子,求助 P1002
查看原帖
萌新,妹子,求助 P1002
555426
烟烟罗_楼主2022/7/11 16:55

RT,WA 40pts

#include<bits/stdc++.h>
using namespace std;

#define int long long
int n, m;
int f[30][30];
int x, y;

int fx[8][2] = {{-2, -1}, {-1, -2}, {1, -2}, {2, -1}, {2, 1}, {1, 2}, {-1, 2}, {-2, 1}};

signed main()
{
	cin >> n >> m;
	cin >> x >> y;
	f[0][0] = 0;
	f[x][y] = -1;
	for (int i = 0; i < 8; i++)
	{
		int xx = x + fx[i][0];
		int yy = y + fx[i][1];
		if(xx < 0 or xx > n or yy < 0 or yy > m) continue;
		f[xx][yy] = -1;
	}
	for (int i = 1; i <= n; i++) f[i][0] = 1;
	for (int i = 1; i <= m; i++) f[0][i] = 1;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			if(f[i][j] < 0) continue;
// 			if (f[i - 1][j] != -1 and f[i][j - 1] != -1) f[i][j] = f[i - 1][j] + f[i][j - 1];
// 			if (f[i - 1][j] == -1 and f[i][j - 1] != -1) f[i][j] = f[i][j - 1];
// 			if (f[i - 1][j] != -1 and f[i][j - 1] == -1) f[i][j] = f[i - 1][j];
			if(f[i][j - 1] != -1) f[i][j] += f[i][j - 1];
			if(f[i - 1][j] != -1) f[i][j] += f[i - 1][j];
		}
	}
	cout << f[n][m] << endl;
	return 0;
}
2022/7/11 16:55
加载中...