完全背包问题,只是物品只有两件既吃汉堡包的时间,容量为总时间t,每个物品的价值为1.
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10010;
int dp[maxn];
int main(){
int t,p[3];
while(~scanf("%d %d %d",&p[1],&p[2],&t)){
for(int i=1; i<=t; ++i) dp[i] = -100000;
dp[0] = 0;
for(int i=1; i<=2; ++i)
for(int j=p[i]; j<=t; ++j)
dp[j] = max(dp[j],dp[j-p[i]]+1);
int temp = t;
while(dp[temp] < 0) temp--;
if(temp == t)
printf("%d\n",dp[temp]);
else
printf("%d %d\n",dp[temp],t-temp);
}
return 0;
}