1 1 3 0 0 0
4
#include <iostream> #include <cmath> #include <algorithm> using namespace std; #include <queue> int a[10005],b[10005]; int num[4]; int main() { freopen("C:\\in.txt","r",stdin); while(scanf("%d %d %d",&num[1],&num[2],&num[3])!=EOF){ int v[4]={0,1,2,5}; if(!num[1]&&!num[2]&&!num[3])break; int sum=0; for(int i=1;i<=3;i++) sum+=num[i]*v[i]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[0]=1; for(int i=1;i<=3;i++){ for(int j=0;j<=sum;j++) if(a[j]) for(int k=0;k*v[i]+j<=sum&&k<=num[i];k++) b[k*v[i]+j]+=a[j]; for(int j=0;j<=sum;j++) { a[j]=b[j]; b[j]=0; } } int index=0; for(int i=0;i<=10000;i++){ if(!a[i]){ index=i; break; } } printf("%d\n",index); } return 0; }
HDU1085 Holding Bin-Laden Captive!
原文:http://blog.csdn.net/starcuan/article/details/19247989