读完题目后,就能发现,这是一道01背包问题,该题目将背包中
的不同物体的重量这个限制条件改成了采取不同种类的药所需要的时间
思想精髓不变化。。。。
用两层循环来A掉,外循环依次考虑每种药,内循环扫一遍
看看是后采摘这种药能影响到时间,然后在采摘和不采摘这种药之间
选取一个最大值即可。。。。
</pre><pre name="code" class="cpp"># include<stdio.h> int f[1000+8]; int main(void) { int i, j; int T, n; int t, v; scanf("%d%d",&T,&n); for ( i = 1;i <= n;i++ ) { scanf("%d%d",&t,&v); for ( j = T;j >= t;j-- ) { if ( f[j-t] + v > f[j] ) f[j] = f[j-t] + v; } } printf("%d\n",f[T]); return 0; }