oj
谦恭
偏向学术发展,不擅长工程项目
展开
-
poj1458 最长公共子序列(lcs)
这个题目用dp第一次做题目时候在dp方法中二重循环中,把i和j的初始设置为了1,但是在输入两个字符串的时候,char数组是从开始的,于是在判断if(str1[i]==str[j])时候出错,应改正为if(str[i-1]==str[j-1])以下为从网页找到的一张图,侵删。这个图就是lcs dp的主要思路。当str1[i-1]==str2[j-1]时,dp[i][j] = dp原创 2016-09-20 10:36:25 · 278 阅读 · 0 评论 -
poj1014多重背包
做这个题目的时候受到dp时取min还是max的影响,不知道最后该怎么做,看了大神的blog有了思路,直接粘贴代码了。出处:http://blog.csdn.net/lyy289065406/article/details/6661449優YoU的博客//Memory Time //656K 16MS /*多重背包+二进制优化*/#includeusing namespace转载 2016-09-23 10:35:16 · 315 阅读 · 0 评论 -
01背包
今天做了一个很简单的dp题目,发现自己没什么思路,经过百度指点才发现是完全背包。然后开始重新补习了一下背包,从01开始整理吧。0,1背包是放与不放两种状态,于是称作01.题目: 有N件物品和一个容量为V的背包。放入第i件物品消耗的空间为Ci,得到的价值是Wi。求解将哪些物品放入背包可使价值总和最大。(blog主要给出求最大和的方法)思路: F[原创 2016-09-20 23:33:43 · 299 阅读 · 0 评论 -
完全背包 poj1384
http://poj.org/problem?id=1384#include#include#includeusing namespace std;int p[510];int w[510];int dp[10010];int min(int a,int b){ return a<b?a:b;}int main(){ int T; scanf("%原创 2016-09-22 13:11:35 · 344 阅读 · 0 评论 -
poj 2533 最长递增子序列
题目很简单,要求输入一个int数列,输出最长递增子序列的长度。方法为dp。以下为dp环节for(int i=0;i dp[i] = 1; for(int j=0;j dp[i] = max(dp[i],dp[j]+1); }}#includeint n;int arr[1005];int ans[1005];int max(in原创 2016-09-19 23:54:26 · 251 阅读 · 1 评论