| ||||||||||
| 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 | |||||||||
哪位大神告诉下这题该怎么剪枝,本人小白一直TLE#include<iostream>
using namespace std;
int a,b,c,d,e,f,i,num=1,sum;
int number[6],vaule[20001];
bool dfs(int now,int n)
{if(now==sum-now) return true;
else if(now<sum-now)
{for(int k=n;k<i;k++)
if(dfs(now+vaule[k],k+1)) return true;}
return false;}
int main()
{while(cin>>a>>b>>c>>d>>e>>f)
{if(a||b||c||d||e||f)
{number[0]=a;
number[1]=b;
number[2]=c;
number[3]=d;
number[4]=e;
number[5]=f;
sum=0;
for(i=0;i<6;i++)
sum+=number[i]*(i+1);
memset(vaule,-1,sizeof(vaule));
for(i=0;i<a;i++)
vaule[i]=1;
while(b--)
{vaule[i]=2;i++;}
while(c--)
{vaule[i]=3;i++;}
while(d--)
{vaule[i]=4;i++;}
while(e--)
{vaule[i]=5;i++;}
while(f--)
{vaule[i]=6;i++;}
if(sum%2==0)
{if(dfs(0,0))
cout<<"Collection #"<<num<<":\n"<<"Can be divided.\n";
else
cout<<"Collection #"<<num<<":\n"<<"Can't be divided.\n";
}
else
cout<<"Collection #"<<num<<":\n"<<"Can't be divided.\n";
num++;}
else break;}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator