标签:des style http 使用 strong os
Description
Input
Output
Sample Input
9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0
Sample Output
6 5
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int n,num[69];
int pd[69];
int cmp(int a,int b)
{
return a>b;
}
int dfs(int len,int s,int nu)
{
int i;
if(s==0&&nu==0)//如果剩下的长度和剩下的木棒数为0,则成功
return len;
if(s==0)//如果剩下的长度为0,则重新赋值
s=len;
for(i=0;i<n;i++)
{
if(pd[i]==1)
continue;
if(s>=num[i])
{
pd[i]=1;
if(dfs(len,s-num[i],nu-1))
return len;
pd[i]=0;//如果不成功,则当前棒不使用
if(num[i]==s||s==len)
break;
while(num[i]==num[i+1])
i++;
}
}
return 0;
}
int main()
{
while(cin>>n&&n)
{
int i;
int sum;
sum=0;
int len,k;
for(i=0;i<n;i++)
{
cin>>num[i];
sum=sum+num[i];
}
sort(num,num+n,cmp);
for(len=num[0];len<=sum;len++)
{
memset(pd,0,sizeof(pd));
if(sum%len==0)
{
k=dfs(len,0,n);
if(k)
break;
}
}
cout<<k<<endl;
}
return 0;
}
/*
9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0
*/
Sticks(回溯和剪枝和关于局部变量的问题),布布扣,bubuko.com
标签:des style http 使用 strong os
原文地址:http://blog.csdn.net/sunshumin/article/details/37913703