标签: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