0
点赞
收藏
分享

微信扫一扫

51Nod1002 数塔取数问题


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

#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;
}

 

举报

相关推荐

0 条评论