标签:缺点 tle 金字塔 描述 最大的 路径 输入 code 区别
观察下面的数字金字塔。
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大
第一个行包含 R(1<= R<=1000) ,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。
单独的一行,包含那个可能得到的最大的和。
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
30
题目翻译来自NOCOW。
USACO Training Section 1.5
蒟蒻一来看到这题,大叫:“哇,这题真简单!贪心就行啦!”
但是贪心法的缺点在此题中一览无余的展现了出来:目光短浅。
如果按照贪心法思路,则:7-8-1-7-5,其和为28;
但是!!!
存在着另外一条路:7-3-8-7-5,其和为30。
所以贪心法就OUT了。。。
然后蒟蒻又想:贪心法不行,那穷举总行了吧!
结果这次蒟蒻又想错了……
在本题中,R<=1000,要是用穷举法只有一种结果:TLE。
所以!!!
本题唯一的方法就是:动态规划!!!
此题需用递推。
递推共有两种方法可以选择:顺推法和逆推法,两种方法皆可。
实际上可以这样理解两种方法的区别:顺推法是从顶层推到底层,而逆推法则是从底层推到顶层的。
讲到这里,想必整道题的思路已经给大家理清楚了,大家就自己写程序吧!
洛谷 P1216 [USACO1.5]数字三角形 Number Triangles
标签:缺点 tle 金字塔 描述 最大的 路径 输入 code 区别
原文地址:http://www.cnblogs.com/Xray-luogu/p/7634434.html