标签:报告 空间复杂度 思路 ++ end 心得体会 最大 color 决定
实践题目:求经过数字三角形的最大和
问题描述:从三角形的顶端往下走,求经过数字之和最大的一条路径。
算法描述:把第0行第0列的值全都赋值为零,这样三角形的数a[i][j]就都可以用统一的式子表示了,最后在第n行的时候经过比较得到答案。
for(int i=0;i<=n;i++)a[0][i]=0; for(int i=0;i<=n;i++)a[i][0]=0; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ cin>>a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ a[i][j]+=max(a[i-1][j-1],a[i-1][j]); } } int ans=0; for(int i=1;i<=n;i++){ ans=max(ans,a[n][i]); } cout<<ans<<endl;
算法时间及空间复杂度分析:算法中使用了双重循环,所以该算法的时间复杂度是o(n2),用到了一个n×n的表,所以空间复杂度是n2。
标签:报告 空间复杂度 思路 ++ end 心得体会 最大 color 决定
原文地址:https://www.cnblogs.com/Z20171003329/p/9943402.html