求救20分的dp,下载例子输入输出都正确
查看原帖
求救20分的dp,下载例子输入输出都正确
1082712
PeiChen1215楼主2024/4/10 23:33
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll mp[25][25];
ll dp[25][25];
ll dx[] = { 1,1,-1,-1,2,2,-2,-2 };
ll dy[] = { 2,-2,2,-2,1,-1,1,-1 };

int main() {
	ll xb, yb,xm,ym;
	cin >> xb >> yb >> xm >> ym;
	memset(mp, 0, sizeof mp);
	memset(dp, 0, sizeof dp);
	mp[xm][ym] = -1;
	for (int i = 0; i < 8; i++) {
		ll xx = xm + dx[i];
		ll yy = ym + dy[i];
		if (xx<0 || yy<0 || xx>xb || yy>yb) continue;
		mp[xx][yy] = -1;
	}
	for (int i = 0; i <= xb; i++) {
		if (mp[0][i] == -1)	break;
		dp[0][i] = 1;
	}
	for (int i = 0; i <= yb; i++) {
		if (mp[i][0] = -1)break;
		dp[i][0] = 1;
	}

	for (int i = 0; i <= xb; i++) {
		for (int j = 0; j <= yb; j++) {
			if (mp[i][j] == -1) continue;
			dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

		}
	}
	cout << dp[xb][yb];
	return 0;
}
2024/4/10 23:33
加载中...