| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁来看看啊!!!1011题,实在郁闷啊
错在哪儿了--
#include <iostream>
using namespace std;
int b[100]={0},c[100]={0},he=0,su=0;
int tryb(int i)
{
for(int j=i;j>=1;--j)
if(b[j]>0)return j;
return 0;
}
int trya(int i)
{
int j=tryb(i);
if(j==0)return 0;
if(he+j==su){--b[j];return 1;}
if(he+j<su)
{
he+=j;--b[j];
if(trya(j))return 1;
he-=j;++b[j];
}
if(trya(j-1))return 1;
return 0;
}
int main()
{
int n=0,i=0,k=1,l=0,a[100],sum=0;
while(scanf("%d",&n))
{
if(n==0)return 0;
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
if(a[i]>l)l=a[i];
++b[a[i]];
++c[a[i]];
sum+=a[i];
}
for(su=l;su<=sum;++su)
if(sum%su==0)
{
for(k=1;k<sum/su;++k)
{
he=tryb(l);--b[he];
if(he==su)continue;
if(!trya(he))break;
}
if(k==sum/su)
{
printf("%d\n",su);
break;
}
for(k=0;k<=99;++k)
b[k]=c[k];
}
for(i=0;i<=99;++i)
{
b[i]=0;
c[i]=0;
}
l=0;
sum=0;
}
return 0;
}
大侠们,指点指点!!
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator