poj_1163&&SDUT 1730 The Triangle
来源:互联网 发布:linux screen 切换 编辑:程序博客网 时间:2024/06/05 03:03
The Triangle
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 51049 Accepted: 30929
Description
73 88 1 02 7 4 44 5 2 6 5(Figure 1)
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
573 88 1 0 2 7 4 44 5 2 6 5
Sample Output
30
#include <iostream>#include <algorithm>using namespace std;int m=100;int main(){ int array[m][m]; int *getsum;//进一步优化空间,指针 int n; cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=i;++j) cin>>array[i][j]; getsum=array[n]; for(int i=n-1;i>=1;--i) for(int j=1;j<=i;++j) getsum[j]=max(getsum[j],getsum[j+1])+array[i][j]; //不理解的话可以用getsum[j]=max(array[i+1][j],array[i+1][j+1])+array[i][j];将数值代入就会发现rray每次计算的数值并没有与getsum的值联系在一起 cout<<getsum[1]<<endl; return 0;}//递推,空间优化#include <iostream>#include <algorithm>using namespace std;int m=100;int main(){ int array[m][m]; int getsum[m]; int n; cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=i;++j) cin>>array[i][j]; for(int i=1;i<=n;++i) getsum[i]=array[n][i]; for(int i=n-1;i>=1;--i) for(int j=1;j<=i;++j) getsum[j]=max(getsum[j],getsum[j+1])+array[i][j]; //不理解的话可以用getsum[j]=max(array[i+1][j],array[i+1][j+1])+array[i][j];将数值代入就会发现rray每次计算的数值并没有与getsum的值联系在一起 cout<<getsum[1]<<endl; return 0;}//超时#include <iostream>#include <algorithm>#define m 100using namespace std;int n;int array[m][m];int getsum(int i,int j){ if(i==n) return array[i][j]; int x=getsum(i+1,j); int y=getsum(i+1,j+1); return max(x,y)+array[i][j];}int main(){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>array[i][j]; cout<<getsum(1,1)<<endl; return 0;}//递归#include <iostream>#include <algorithm>#define m 100using namespace std;int n;int array[m][m];int maxsum[m][m];int getsum(int i,int j){ if(maxsum[i][j]!=-1) return maxsum[i][j]; if(i==n) maxsum[i][j]=array[i][j]; else { int x=getsum(i+1,j); int y=getsum(i+1,j+1); maxsum[i][j]=max(x,y)+array[i][j]; } return maxsum[i][j];}int main(){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) { cin>>array[i][j]; maxsum[i][j]=-1; } cout<<getsum(1,1)<<endl; return 0;}//递推#include <iostream>#include <algorithm>using namespace std;int m=100;int main(){ int array[m][m]; int getsum[m][m]; int n; cin>>n; for(int i=1;i<=n;++i) for(int j=1;j<=i;++j) cin>>array[i][j]; for(int i=1;i<=n;++i) getsum[n][i]=array[n][i]; for(int i=n-1;i>=1;--i) for(int j=1;j<=i;++j) getsum[i][j]=max(getsum[i+1][j],getsum[i+1][j+1])+array[i][j]; cout<<getsum[1][1]<<endl; return 0;}
阅读全文
0 0
- poj_1163&&SDUT 1730 The Triangle
- poj_1163 The Triangle
- poj_1163 the triangle
- poj_1163:The Triangle
- poj_1163
- poj_1163
- SDUT 3142 Count triangle
- The Triangle
- The Triangle
- The Triangle
- The Triangle
- The triangle
- The Triangle
- The Triangle
- The Triangle
- The Triangle
- The Triangle
- The Triangle
- IE浏览器滚动条遮住页面内容怎么处理?
- NavigationView添加button
- C++关键字mutable和volatile
- Character.UnicodeBlock中cjk的说明
- R文本分析
- poj_1163&&SDUT 1730 The Triangle
- Eclipse中使用Maven我遇到过的常见报错解决整理
- Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
- React多组件嵌套
- P1616 疯狂的采药,完全背包问题
- 使用Map对于两层for循环的一个优化
- 模拟log4j获取日志对象调用所在的类名、方法名及行号
- 知识体系
- C++ 动态规划-背包类例题