摘要: 至少一种 至多一种 还有自由选取的背包问题参考别人的- -不说了#include #include #include #include using namespace std; int n, T, ans, dp1[105], dp2[105]; struct node { int m, tp; int t[105], h[105]; } set[105]; bool cmp(node x,node y) { return x.tp=set[i].t[j]; k--) { dp2[k]=max(dp... 阅读全文
posted @ 2013-08-24 09:57 Ink_syk 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 可以把每行看做是最多挑一个的物品系列,然后背包过。。#include #include #include #include using namespace std; int dp[105], v[105][105]; int main() { int n, m, i, j, k, w; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; memset(dp,-63,sizeof(dp)); dp[0]=0; for(i=0;i=0;j--) ... 阅读全文
posted @ 2013-08-24 09:43 Ink_syk 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 这题乍一看是01背包水题,其实一看数据,明显直接01背包是过不了的, 再看那个V-C的范围是0-10 很明显,可能的搭配数最多也就121种那么我就开一个数组记录下各种搭配的数量,用多重背包过#include #include #include #include using namespace std; int dp[10005]; char s[15]; int v, c, data[11][11], m; void deal(int vi,int w,int num) { int i, j, k; k=1; while(k=k*w;j--) ... 阅读全文
posted @ 2013-08-24 09:03 Ink_syk 阅读(84) 评论(0) 推荐(0) 编辑