1、实践的题目是:数字三角形.
2、问题的描述是:给定一个由 n行数字组成的数字三角形如下图所示:试设计一个算法,计算出从三角形 的
顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
3、算法的描述是:
for(i=n-1;i>=1;i--){
for(j=0;j<i;j++){
if(b[i][j]>b[i][j+1])
b[i-1][j]=b[i][j]+a[i-1][j];
else
b[i-1][j]=b[i][j+1]+a[i-1][j];
}}
自下向上开始比较,选择大的数字。
4、算法时间及空间复杂度分析(需要有分析过程):
因为算法里有2重for循环,所以时间复杂度为n^2;申请了a、b两个数组,空间复杂度为n^2。
5、我的心得体会(对本次实践收获及疑惑进行总结):
在运行这题目的代码的时候总是出错,后来发现是因为最后输出的时候输出的是b[1][1]而不是b[0][0];因为忽视了这个小毛病而导致浪费了很多时间,以后对于问题的逻辑要更加严谨才可以。