POJ 1252 Euro Efficiency
生活随笔
收集整理的這篇文章主要介紹了
POJ 1252 Euro Efficiency
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
背包 要么 BFS
意大利是說給你幾個基本的貨幣,組成 1~100 所有貨幣,使用基本上的貨幣量以最小的。
出口 用法概率。和最大使用量。
能夠BFS 有可能 。
只是記得數(shù)組開大點。 可能會出現(xiàn) 100 = 99+99 -98 的情況。
背包是先做一個全然背包,求得最少可能由多少相加。
然后做一個 01背包,看是否能被 減。
背包:
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 #define LL long long using namespace std; int dp[10002];int value[7];int main() {int t;scanf("%d",&t);while(t--){int m=10001;for(int i=0; i<6; i++)scanf("%d",&value[i]);for(int i=1; i<m; i++)dp[i]=10001;dp[0]=0;for(int i=0; i<6; i++){for(int j=value[i]; j+value[i]<m; j++){dp[j]=min(dp[j-value[i]]+1,dp[j]); // printf("%d :%d==\n",j,dp[j]);}}for(int i=0; i<6; i++){for(int j=m-value[i]; j>0; j--){dp[j]=min(dp[j+value[i]]+1,dp[j]); // printf("%d :%d==\n",j,dp[j]);}}double ans=0;int maxn=0;for(int i=1; i<=100; i++){ // printf("%d : %d\n",i,dp[i]);ans+=dp[i];maxn=max(maxn,dp[i]);}printf("%.2f %d\n",ans/100.0,maxn);} }BFS:
版權(quán)聲明:本文博客原創(chuàng)文章。博客,未經(jīng)同意,不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的POJ 1252 Euro Efficiency的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 文件头 static char
- 下一篇: C++sort函数使用总结