Time Limit: 1000 MS Memory Limit: 32768 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
[Submit] [Status]
2 900 250
0 50
考点:完全背包、思维
方法一:
思维题:150 200 350 转换为两件物品 150 150+50
#include<iostream>
using namespace std;
int main()
{int t; cin>>t;int n;while(t--&&cin>>n){int ans=0,cnt=n/150;if(cnt<(n%150)/50) ans=n%150-cnt*50;else ans=n%50;cout<<ans<<endl;}
}
方法二:
完全背包
#include<cstdio>
#include<cstring>
using namespace std;
int max(int x,int y){return x>y?x:y;
}
int dp[10100];
int main()
{int t,money;int i,j;int value[3]={150,200,350};scanf("%d",&t);while(t--&&scanf("%d",&money)){memset(dp,0,sizeof(dp));for(i=0;i<3;i++){for(j=value[i];j<=money;j++){dp[j]=max(dp[j],dp[j-value[i]]+value[i]);}}printf("%d\n",money-dp[money]);}return 0;
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态