数字三角形III
2017-08-26 15:32
155 查看
问题 E(2687): 数字三角形III
时间限制: 1 Sec 内存限制: 128 MB题目描述
![](http://192.168.28.99/upload/201407/2687%281%29.gif)
输入
第1行:1个整数N,表示数字三角形的行数和列数(1 <= N <= 1000)接下来N行,第i行有i个整数,表示数字三角形
输出
第1行:1个整数,表示问题的最优解样例输入
(如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)5 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0
样例输出
3
—————————————————分析——————————————————
这道题很像数字三角形I呢,只是求的是总和的个位。怎样才能让总和的各位尽量大呢?我们分析一下:
首先,我们想到的肯定是先把每个数都模一下10,然后像数字三角形I一样做,然而这是错的。
其实正确的思想是这样的:
另开一个f数组,把这个数可能的个位数全存下来。
————————————————代码实现—————————————————
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,a[1005][1005],f[1005][1005][14];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
f
[i][a
[i]]=1;
for(int i=n-1;i>=1;i--)
for(int j=1;j<=i;j++)
for(int k=0;k<=9;k++)
if(f[i+1][j][k]||f[i+1][j+1][k])
f[i][j][(k+a[i][j])%10]=1;
for(int i=9;i>=0;i--)
if(f[1][1][i]==1) {printf("%d",i);return 0;}
return 0;
}
觉得有用就顶起来
戳我查更多博客
相关文章推荐
- 数字三角形(版本I-III)[动态规划]
- 数字三角形III
- POJ 1163 数字三角形
- 【编程马拉松】【025-数字三角形 】
- 数字三角形(简单dp)
- LightOJ 1004 Monkey Banana Problem (DP 数字三角形)
- lintcode triangle 数字三角形
- 数字三角形
- 【java】数字三角形最长路径
- NUC1041 数字三角形【DP】
- hihoCoder 1037 数字三角形
- POJ 1163 The Triangle - 数字三角形详解
- YTU.3134: 动态规划基础题目之数字三角形
- 数字三角形最大和的计算
- 洛谷 P1118 [USACO06FEB]数字三角形Backward Digit Su…
- C语言初级练习——编写一个乘法表,呈倒三角形、输入一串字符,要求输出这串字符中的数字最多的那段的位置以及这段数字的个数
- LightOJ 1047 Neighbor House (DP 数字三角形变形)
- hiho1037 数字三角形 (数塔 dp)
- 【hiho一下】第五周 数字三角形
- 数字三角形问题