随笔分类 - DP专题
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2084这是一道很简单的DP题 ,我觉得就是一种思想,从后面往前面每次找和最大的,把每个数更新,一直往上推就可以了。。。我用了两种方法,一种的递归,一种递推递推代码:#include <stdio.h>#include <string.h>#include <stdlib.h>int a[100][100];void dp(int n){ for(int i=n-1;i>=0;--i) { for(int j=i;j>0;--j) { if(a[i][j]+a[i
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1231这道题目还是简单的DP,一开始不懂做,看了看解题报告,觉得有个思想特别好,因为当sum>0时sum加上当前值a[i]肯定比a[i]要大,而Sum<0时肯定要小,所以sum<0时,sum=a[i]。然后再利用max找出最大的和,并且用x,y标记始末位置,这里很巧妙的就可以不用处理0和全是负数的情况了,只有全是负数,max猜可能是负数,当max=0的时候,情况也包括在里面了,wa一次因为数组开小了,把10000看成1000了。。。。代码如下:#include <stdio.h>
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2071其实我觉得这不算一道dp题,它就是简单的暴力就可以了,甚至还可以用冒泡,但是我觉得我还是有点明白dp的思想了,所以把它看成dp吧,一次次记录max;直到最后一个数搜索完了。其实可以不用数组,有点多此一举了。其实真的很简单。。代码:#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ int t,n; double s[102],max; scanf("%d",&
        阅读全文
            
                    
                
浙公网安备 33010602011771号