您的位置:首页 > 其它

uva10465 完全背包

2016-02-26 17:09 239 查看
题目大意:

一个人可以花m分钟吃一种汉堡,可以花n分钟吃另外一种汉堡,问在t时间内最多可以吃几个汉堡 应该尽可能的不浪费时间,如果真的非得浪费时间就用这些时间喝啤酒。输出喝啤酒的时间。

思路:

背包+贪心 完全背包

代码:

#include <iostream>
using namespace std;
#include <stdio.h>
#include <cstring>

int dp[10005];
int main() {
int n,m,t;
while(scanf("%d %d %d",&m,&n,&t)!=EOF) {
//  memset(dp,-100001,sizeof(dp));
for(int i = 1; i <= t; i++)
dp[i] = -1000001;
dp[0] = 0;
for(int i = m; i <= t; i++) {
if(dp[i] < dp[i - m] + 1)
dp[i] = dp[i - m] + 1;
}
for(int j = n ; j <= t; j++)
if(dp[j] < dp[j - n] + 1)
dp[j] = dp[j - n] + 1;
int k = t;
while(dp[k] < 0) k--;
printf("%d",dp[k]);
if(k == t)
printf("\n");
else
printf(" %d\n",t - k);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: