51Nod1002 数塔取数问题

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


从第二层开始,加上一层的大数,一直加到最后一层为止,在最后一层选择最大的数即可。

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
cin>>n;
int i,j;
int a[500][500];
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
for(j=0;j<i+1;j++)
cin>>a[i][j];
for(i=1;i<n;i++)
{
for(j=0;j<i+1;j++)
{
if(j==0)
a[i][j]+=a[i-1][j];
// else if(j==n-1)
// a[i][j]+=a[i-1][j-1];
else
a[i][j]+=a[i-1][j-1]>a[i-1][j]?a[i-1][j-1]:a[i-1][j];
}
}
int ans=0;
for(i=0;i<n;i++)
{
if(ans<a[n-1][i])
ans=a[n-1][i];
}
cout<<ans<<endl;
}

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6