记忆化搜索求调
查看原帖
记忆化搜索求调
551043
YHX2010楼主2024/10/27 13:34

之前只写过dp,昨天J、S考完想练练记忆化搜索,提交上去只有55pts。

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 10;
int n, a[MAXN][MAXN], opt[MAXN][MAXN];
bool vis[MAXN][MAXN];
int dp(int x, int y) {
	if (x == n)return a[x][y];
	if (vis[x][y])return a[x][y];
	int res = max(dp(x + 1, y), dp(x + 1, y + 1)) + a[x][y];
	vis[x][y] = 1;
	return opt[x][y] = res;
}
int main() {
	memset(a, 128, sizeof a);
	memset(opt, 128, sizeof opt);
	cin >> n;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= i; j++)
			cin >> a[i][j];
	cout << dp(1, 1) << endl;
	return 0;
}

求大佬指教

2024/10/27 13:34
加载中...