博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字三角形
阅读量:4958 次
发布时间:2019-06-12

本文共 1407 字,大约阅读时间需要 4 分钟。

7

3   8
8   1   0
2   7   4   4
4   5   2   6   5

求自顶向下的最大和。

1 #include
2 using namespace std; 3 const int maxn=606; 4 5 int main() 6 { 7 ios::sync_with_stdio(0); std::cin.tie(0); 8 int dp[maxn],a[maxn][maxn]; 9 int n;10 while( cin >> n){11 memset( dp, 0, sizeof dp);12 memset( a, 0, sizeof a);13 int mid=1;14 for(int i=1;i<=n;i++){15 for(int j=1;j<=mid;j++)16 cin >> a[i][j];17 mid++;18 }19 mid=2;20 dp[1]=a[1][1];21 for(int i=2;i<=n;i++){22 for(int j=mid;j>0;j--){23 dp[j]=max(a[i][j]+dp[j],a[i][j]+dp[j-1]);24 }25 mid++;26 }27 int ans=0;28 for(int i=1;i<=mid;i++)29 ans=max(ans,dp[i]);30 31 cout << ans <

还有一种更加简洁的写法,直接利用dp数组进行输出。

1 #include
2 using namespace std; 3 const int maxn=606; 4 5 int main() 6 { 7 ios::sync_with_stdio(0); std::cin.tie(0); 8 int a[maxn][maxn]; 9 int n;10 while( cin >> n){11 int mid=1;12 for(int i=1;i<=n;i++)13 for(int j=1;j<=i;j++)14 cin >> a[i][j];15 16 for(int i=n-1;i>=1;i--)17 for(int j=1;j<=i;j++)18 a[i][j]=max(a[i][j]+a[i+1][j],a[i][j]+a[i+1][j+1]);19 20 cout << a[1][1] <

 

转载于:https://www.cnblogs.com/ZQUACM-875180305/p/9042670.html

你可能感兴趣的文章
IoC的基本概念
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>
Python3 图片转字符画
查看>>
[C陷阱和缺陷] 第7章 可移植性缺陷
查看>>
人需要治愈
查看>>
linux中configure文件默认执行结果所在位置
查看>>
Windows向Linux上传文件夹
查看>>
20180104-高级特性-Slice
查看>>
6个SQL Server 2005性能优化工具介绍
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
iTextSharp带中文转换出来的PDF文档显示乱码
查看>>