1033.采药1

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <algorithm>//庆祝自己第一道01背包问题hhhhhh
 5 #include <string.h>
 6 using namespace std;
 7 int time[110];
 8 int value[110];
 9 int tab[1100][1100];//此处吐槽一下。。数组开小居然会wa而不是re。。。。。
10 int T,M,i,j;
11 int main()
12 {
13     while(scanf("%d%d",&T,&M)!=EOF)
14     {
15         for(i=1;i<=M;i++)
16         {
17             scanf("%d%d",&time[i],&value[i]);
18         }
19         memset(tab,0,sizeof(tab));//memset
20         for(i=1;i<=M;i++)//member
21         {
22             for(j=1;j<=T;j++)//time
23             {
24                 if(j<time[i])//如果空间盛放不下
25                 {
26                     tab[i][j]=tab[i-1][j];
27                 }
28                 else
29                 {
30                     tab[i][j]=max(tab[i-1][j],tab[i-1][j-time[i]]+value[i]);
31                 }//从放进去或者是不放进去选择价值最大的情况
32             }
33         }
34         cout<<tab[M][T]<<'\n';
35     }
36     return 0;
37 }
…… time=0 time=1 time=2 ……
第四个包        
第三个包        
第二个包        
第一个包        
posted @ 2018-11-28 20:11  观稳769  阅读(266)  评论(0编辑  收藏  举报