博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ_ACM_数塔
阅读量:6067 次
发布时间:2019-06-20

本文共 1280 字,大约阅读时间需要 4 分钟。

 

Problem Description
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:
有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?
已经告诉你了,这是个DP的题目,你能AC吗?
 
Input
输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。
 
Output
            对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。
 
Sample Input
1573 88 1 0 2 7 4 44 5 2 6 5
 
Sample Output
30
 
 
Code
View Code
1 //build frame, input, handle, output 2 #include 
3 int f[105][105]; 4 int main() 5 { 6 int T, N, i, j, max; 7 scanf("%d", &T); 8 while (T--) 9 {10 //input11 scanf("%d", &N);12 for (i = 1; i <= N; i++)13 for (j = 1; j <= i; j++)14 scanf("%d", &f[i][j]);15 //handle16 for (i = 2; i <= N; i++)17 for (j = 1; j <= i; j++)18 f[i][j] += f[i - 1][j - 1] > f[i - 1][j] ?19 f[i - 1][j - 1] : f[i - 1][j];20 //get the biggest number and print21 max = -1;22 for (j = 1; j <= N; j++)23 max = max > f[N][j] ? max : f[N][j];24 printf("%d\n", max);25 }26 return 0;27 }
View Code
Key Points
The first one is top-down.
The seconde one is buttom-up.

 

转载于:https://www.cnblogs.com/chuanlong/archive/2012/11/13/2767400.html

你可能感兴趣的文章
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
根据调试工具看Vue源码之组件通信(一)
查看>>
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
查看>>
斯坦福-随机图模型-week1.5
查看>>