Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=2660

没用搜索,DP,二维背包

我的代码
 1 #include <stdio.h>
2 const int INF=10000000;
3 int f[25][1010];
4 int a[25],b[25];
5 int main()
6 {
7 int T;
8 scanf("%d",&T);
9 int n,k,w,i,j,j1,j2;
10 while (T--)
11 {
12 scanf("%d%d",&n,&k);
13 for (i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
14 scanf("%d",&w);
15 for (i=1;i<=k;i++) for (j=0;j<=w;j++) f[i][j]=-INF;
16 for (j=0;j<=w;j++) f[0][j]=0;
17 for (i=1;i<=n;i++)
18 for (j1=k;j1>=1;j1--)
19 for (j2=w;j2>=b[i];j2--)
20 if(f[j1][j2]<f[j1-1][j2-b[i]]+a[i])
21 f[j1][j2]=f[j1-1][j2-b[i]]+a[i];
22 printf("%d\n",f[k][w]);
23 }
24 return 0;
25 }

 

posted on 2012-01-14 17:31  Qiuqiqiu  阅读(178)  评论(0编辑  收藏  举报