码迷,mamicode.com
首页 > 其他好文 > 详细

宠物小精灵之收服 (二维01背包)

时间:2018-07-27 22:27:32      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:bsp   noi   数组   turn   std   scanf   code   c++   精灵   

【题目链接】

    http://noi.openjudge.cn/ch0206/4978/

【算法】

    做的第一道二维的背包问题,只需开的数组增加一维以正确表述每一个状态即可。本质还是多过程决策+最优子结构+无后效性。

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n,m,k,i,j,t,minm;
 4 int v[1010],u[510],dp[1010][510];
 5 int main()
 6 {
 7     scanf("%d%d%d",&n,&m,&k);
 8     minm=m;
 9     for(i=1;i<=k;i++) scanf("%d%d",&v[i],&u[i]);
10     for(i=1;i<=k;i++)
11         for(j=n;j>=v[i];j--)
12             for(t=m;t>=u[i];t--)
13                 dp[j][t]=max(dp[j][t],dp[j-v[i]][t-u[i]]+1);
14     for(i=0;i<=n;i++)
15         for(j=0;j<=m;j++)
16             if(dp[i][j]==dp[n][m]&&j<minm) minm=j;
17     printf("%d %d\n",dp[n][m],m-minm);
18     return 0;
19 }

 

宠物小精灵之收服 (二维01背包)

标签:bsp   noi   数组   turn   std   scanf   code   c++   精灵   

原文地址:https://www.cnblogs.com/Willendless/p/9379710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!