标签:
“Given some Chinese Coins (硬币) (three kinds-- 1, 2, 5), and their number is num_1, num_2 and num_5 respectively, please output the minimum value that you cannot pay with given coins.”
You, super ACMer, should solve the problem easily, and don’t forget to take $25000000 from Bush!
1 1 3 0 0 0
4仍旧是母函数水过。题意:有3种面值的硬币{1,2,5} 如今给出这3种硬币的个数,求最小不能组成的面值。。
暴力生成 a[]数组扫一遍第一个为0的就是最小不能组成的面值#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <cctype> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> #include <list> #define maxn 100100 #define ll long long #define INF 0x3f3f3f3f #define pp pair<int,int> using namespace std; int a[maxn],b[maxn],v[3]={1,2,5},p,n[3]; void solve() { p=n[0]+n[1]*2+n[2]*5; memset(a,0,sizeof(a)); a[0]=1; for(int i=0;i<3;i++) { memset(b,0,sizeof(b)); for(int j=0;j<=n[i]&&j*v[i]<=p;j++) for(int k=0;k+j*v[i]<=p;k++) b[k+j*v[i]]+=a[k]; memcpy(a,b,sizeof(b)); } int ans; for(ans=0;ans<=p;++ans) if(a[ans]==0)break; printf("%d\n",ans); } int main() { while(~scanf("%d%d%d",&n[0],&n[1],&n[2])) { if(!n[0]&&!n[1]&&!n[2])break; solve(); } return 0; }
版权声明:本文博主原创文章,博客,未经同意不得转载。
HDU 1085-Holding Bin-Laden Captive!(生成功能)
标签:
原文地址:http://www.cnblogs.com/yxwkf/p/4825917.html