信息学奥赛(pascal)的动态规划问题。

谁对自己在信息学奥赛(pascal)的动态规划上,认为自己是不可小视的认为,能给我几个经典例题和详细的讲解和答案吗?感激不尽!!!
(教程总看不懂,教通俗点谢谢。)
谁对自己在信息学奥赛(pascal)的动态规划上,认为自己是不可小视的认为,能给我几个经典例题和详细的讲解和答案吗?感激不尽!!!
(教程总看不懂,教通俗点,加点通俗的语言谢谢。)(基本思想介绍一下,别在全教程上粘,加点自己的见解和图。)
(希望厉害的师傅能给我一个满意的答案!)。

第1个回答  2007-06-23
动态规划关键弄清楚f【i】或f【i,j】代表什么,写好状态转移方程以及边界条件。建议你先开表,通过小的数据找出规律,在将下标套进去,就可以很快出解,我一般都是这么做的。
下面是01背包的参考程序,很短,速度也快,建议你先运行小数据,监控变量,慢慢就会搞懂的。
program bag_01;
var i,j,n,k,l,t:integer;{n-WuPin;k-Kongjian}
w,m:array[1..5001]of integer;{w-weight;m-money}
f:array[0..5001,0..5001]of integer;
function max(a,b:integer):integer;
begin
if a>b then max:=a
else max:=b;
end;
begin
readln(n,k);
for i:=1 to n do
readln(w[i],m[i]);
for i:=1 to n do{WuPin}
for j:=1 to k do{ZhongLiang}
if j>=w[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-w[i]]+m[i])
else f[i,j]:=f[i-1,j];
writeln(f[n,k]);
end.
动规的经典题还有数字宝塔,最长不下降子序列,最优代价子母树,乘法问题等等,网上应该都有详细解答,我没法跟你细说
第2个回答  2007-06-22
动态规划类似于递推,但是是一个数组的递推.把每个阶段的最优解用数组记下来,再利用这个最优解推断下一个最优解,要注意的是本阶段的最优解一定只和上一个或上几个最优解有关.我们老师说,动态规划就是利用添表的方式使局部最优导致整体最优.
第3个回答  2007-06-20
动态规划一定要列表!
看不懂自己手推一下回豁然开朗的。
要经典例题的话“0/1背包”,网上搜一下程序立刻就有,还是比较好懂的。
要注意的其实就是动态转移方程和边界条件,理解清楚就没问题了!
第4个回答  2007-06-22
先推荐一个学习DP的网站:www.nocow.cn
接着回答问题:
经典例题有很多,资料我也有,可是没法给你,你可以自己找找看
背包问题:
(1)0/1背包
(2)完全背包
序列问题:
(1)最长XX子序列
(2)最大连续子段和
数字三角形
等等等等
第5个回答  2007-06-26
http://www.vijos.cn/Problem2.asp?Type=2
不懂的可以看题解,里面有的本回答被提问者采纳
相似回答