[DP]数字金字塔
2017-02-25 10:19
375 查看
SSL 1100 1458
洛谷 P1216 [USACO1.5]数字三角形 Number Triangles
题目描述
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
2 7 4 4
4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大
分析
不多讲
洛谷 P1216 [USACO1.5]数字三角形 Number Triangles
题目描述
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
7 3 8 8 1 0
2 7 4 4
4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大
分析
不多讲
//一维顺推 #include <iostream> #include <cstdio> int f[1001],a[1001],n,i,j; int main() { scanf("%d",&n); scanf("%d",&a[1]); f[1]=a[1]; for (i=2;i<=n;i++) { for (j=1;j<=i;j++) scanf("%d",&a[j]); for (j=i;j>=1;j--) { if (a[j]+f[j]>a[j]+f[j-1]) f[j]=a[j]+f[j]; else f[j]=a[j]+f[j-1]; } } j=0; for (i=1;i<=n;i++) if (j<f[i]) j=f[i]; printf("%d\n",j); return (0); }
//逆推法 #include <iostream> #include <cstdio> int f[1001][1001],a[1001][1001],n,i,j; int main() { scanf("%d",&n); for (i=1;i<=n;i++) for (j=1;j<=i;j++) scanf("%d",&a[i][j]); for (i=1;i<=n;i++) f [i]=a [i]; for (i=n-1;i>=1;i--) for (j=1;j<=i;j++) if (a[i][j]+f[i+1][j]>a[i][j]+f[i+1][j+1]) f[i][j]=a[i][j]+f[i+1][j]; else f[i][j]=a[i][j]+f[i+1][j+1]; printf("%d\n",f[1][1]); return (0); }
//顺推法 #include <iostream> #include <cstdio> int f[1001][1001],a[1001][1001],n,i,j; int main() { scanf("%d",&n); for (i=1;i<=n;i++) for (j=1;j<=i;j++) scanf("%d",&a[i][j]); f[1][1]=a[1][1]; for (i=2;i<=n;i++) for (j=1;j<=i;j++) if (a[i][j]+f[i-1][j]>a[i][j]+f[i-1][j-1]) f[i][j]=a[i][j]+f[i-1][j]; else f[i][j]=a[i][j]+f[i-+1][j-+1]; j=0; for (i=1;i<=n;i++) if (j<f [i]) j=f [i]; printf("%d\n",j); return (0); }
相关文章推荐
- USACO 1.5 Number Triangles 数字金字塔(经典dp)
- Java实验(1)数字金字塔
- LightOJ 1047 Neighbor House (DP 数字三角形变形)
- Java基础代码实例 :在控制台中输出金字塔,这个金字塔是由左右对称的数字组成的。
- [noip2013]小朋友的数字(dp+规律)
- noip2013小朋友的数字(dp)
- poj 3176 (dp 金字塔)
- 【POJ 1651】【区间DP 矩阵链乘的变形】Multiplication Puzzle【一串数字,除了头尾不能动,每次取个数字,它与左右相邻数字的乘积为其价值,求价值和最小】
- 数位dp 等凹数字 (未完成)
- 【BZOJ1833】【数位DP】 count 数字计数
- 数字转字母的编码方式的个数 ---- DP
- poj 3252 数位dp(dfs写法) 二进制0出现比1多的数字个数
- codevs2189 数字三角形W dp
- 【BZOJ1833】【ZJOI2010】数字计数 数位DP
- timus 1658. Sum of Digits URAL 解题报告 DP 数字位数和……
- 有关删除数字的dp问题
- 1833: [ZJOI2010]count 数字计数 数位dp
- 幸运数字 (数位DP)
- 编写程序打印出数字金字塔。
- java编程----数字金字塔