算法第3章上机实践报告
Posted hall
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第3章上机实践报告相关的知识,希望对你有一定的参考价值。
- 实践题目:数字三角形
- 问题描述:给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。
- 算法描述:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[150][150];
int dp[150][150];
int main()
{
int n;
scanf("%d", &n);
int i, j;
for(i =1;i <= n;i++){
for(j = 1;j <=i;j++){
scanf("%d", &a[i][j]);
}
}
for(i =1;i <= n;i++){
dp[n][i] = a[n][i];
}
for(i = n;i > 1;i--){
for(j = 1; j<= i;j++){
if(dp[i][j] > dp[i][j+1]){
dp[i-1][j] = a[i-1][j] + dp[i][j];
}else {
dp[i-1][j] = a[i-1][j] + dp[i][j+1];
}
}
}
printf("%d ", dp[1][1]);
return 0;
} - 算法时间及空间复杂度分析(要有分析过程):O(n^2)
- 心得体会(对本次实践收获及疑惑进行总结):本次上机实践由于一些知识没有搞明白,在课上并没有把问题解决,在回到宿舍看着网上的一些代码,自己慢慢分析再进行打代码编译成功的,不过这样我认为对自己的帮助还是很大的,至少我能在最后理解了这个问题的思想。
以上是关于算法第3章上机实践报告的主要内容,如果未能解决你的问题,请参考以下文章