hdu1085 Holding BinLaden Captive!

嘿嘿

还是一样的题目

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int p[4]={0,1,2,5};
int c[4],maxn;
int num1[10000],num[10000];
void sovle()
{
	memset(num,0,sizeof(num));
	memset(num1,0,sizeof(num1));
	for(int i=0;i<=c[1];i++)
		num1[i]=num[i]=1;
	for(int i=2;i<4;i++)  
    {  
       for(int j=1;j<=c[i];j++)  
           for(int k=0;k<=maxn;k++)  
            {         
				if(num[k]==0)
					continue;
                int t=k+j*p[i];
                num1[t]+=num[k];  
            }  
        for(int j=0;j<=maxn;j++)  
            num[j]=num1[j];  
    }  
}
int main()
{
	while(scanf("%d %d %d",&c[1],&c[2],&c[3])==3)
	{
		if(!(c[1]||c[2]||c[3]))
			break;
		maxn=c[1]*p[1]+c[2]*p[2]+c[3]*p[3];
		if(c[1]==0)
		{
			printf("1\n");
			continue;
		}
		sovle();
		int flag=0;
		for(int i=1;i<=maxn;i++)
			if(num[i]==0)
			{
				printf("%d\n",i);
				flag=1;
				break;
			}
		if(!flag) printf("%d\n",maxn+1);
	}
	return 0;
}
原文地址:https://www.cnblogs.com/nanke/p/2233553.html