一道简单的动规题目,理解题意既可。
dp[i][j] = ((dp[i-1][j]>dp[i-1][j-1])?dp[i-1][j]:dp[i-1][j-1])+ a[i][j] 这里出错了,是a?b:c运算符优先级的问题。
#include<iostream>
#include<stdio.h>
using namespace std;
int a[101][101] = {0};
int dp[101][101] = {0};
int main()
{
int n,max;
while(scanf("%d",&n) != EOF)
{
max = 0;
for(int i =1;i<=n;++i)
{
for(int j =1;j<i+1;++j)
{
scanf("%d",&a[i][j]);
}
}
for(int i =1;i<=n;++i)
{
for(int j =1;j<i+1;++j)
{
dp[i][j] = ((dp[i-1][j]>dp[i-1][j-1])?dp[i-1][j]:dp[i-1][j-1])+ a[i][j];
if(i == n)
{
if(max<dp[i][j])
{
max = dp[i][j];
}
}
}
}
printf("%d\n",max);
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1123016.html