这道题如果按照贪心算法只能解决个别测试点,代码鲁棒性不行。
此题的详细分析参考:问题分析
解题代码:
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 501
int main()
{
int a[MAX][MAX],dp[MAX][MAX] = {-1};
int n,i,j;
cin >> n;
for(i = 1;i <= n;i++)
for(j = 1;j <= n;j++)
cin >> a[i][j];
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
dp[i][j] = max(dp[i][j],max(dp[i-1][j],dp[i][j-1])+a[i][j]);
}
}
cout << dp[n][n] << endl;
return 0;
}