您的位置:首页 > 其它

Section 4.1 Beef McNuggets

2010-02-08 18:35 267 查看
/*
ID: niepeng1
PROG: nuggets
LANG: C++
*/
/*
这题解法玄妙,用了M,N两个素数,那么他们不能组成的最大数是M*N-M-N。
然后对小于它的数目全部判断能否构成。如果有点大于最大的不能构成数并且没有被构成,那么就说明永远不可能有不能构成的最大值了。
总是感觉正确性有点问题,但是呵呵,我又偷懒了。没有用滑动窗口的方法。
闲着可以再思考思考。
*/
#include <stdio.h>
#define Max1 67000
bool cond[Max1]={false};
int data[11];
int num;
bool cond1=false;
int main ()
{
freopen ("nuggets.in", "r",stdin);
freopen ("nuggets.out", "w",stdout);
int i,tem,j;
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%d",&data[i]);
}
for(i=0;i<num;i++)
{
tem=data[i];
cond[tem]=true;
for(j=0;j+tem<Max1;j++)
{
if(cond[j])
cond[j+tem]=true;
}
}
for(i=Max1-1;i>=0;i--)
{
if(cond[i]==false)
{
if( i > 66000)
break;
cond1=true;
printf("%d/n",i);
break;
}
}
if( cond1==false)
printf("0/n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: