求助
查看原帖
求助
1592168
qscpknfhty楼主2025/1/25 14:55

这个dp初始值怎么设的

#include <bits/stdc++.h>
using namespace std;
long long n,m,a[1005][1005],f[1005][1005][2];
int main()
{
	scanf("%d%d",&n,&m);
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= m;j++)
		{
			cin >> a[i][j];
		}
	}
	memset(f,-0x3f,sizeof(f));
	f[1][0][0] = 0;
	for (int j = 1;j <= m;j++)
	{
		for (int i = 1;i <= n;i++)
		{
			f[i][j][0] = f[i][j][1] = max(f[i][j - 1][1],f[i][j - 1][0]) + a[i][j];
		}
		for (int i = 1;i <= n;i++)
		{
			f[i][j][0] = max(f[i - 1][j][0] + a[i][j],f[i][j][0]);
		}
		for (int i = n;i >= 1;i--)
		{
			f[i][j][1] = max(f[i + 1][j][1] + a[i][j],f[i][j][1]);
		}
	}
	cout << max(f[n][m][0],f[n][m][1]);
    return 0;
}
2025/1/25 14:55
加载中...