Source Code
| Problem: 1011 | User: cug_fish2008 | |
| Memory: 280K | Time: 47MS | |
| Language: C++ | Result: Accepted |
- Source Code
#include <iostream> using namespace std; int p[65]; int n,width,count; bool c[65]; bool find(int len,int k) { if(len==width && k==n)return true; if(len==width)len=0; for(int i=0;i<n;i++){ if(c[i])continue; if(len+p[i]>width)continue; c[i]=true; if(find(len+p[i],k+1)) return true; c[i]=false; if(len+p[i]==width || len==0) break; } return false; } int cmp(const void *a,const void *b) { return *(int*)b-*(int*)a; } void Onit() { memset(c,false,n); qsort(p,n,sizeof(int),cmp); } int main() { while(scanf("%d",&n),n!=0){ int sum=0,maxs=-1; for(int i=0;i<n;i++){ scanf("%d",&p[i]); sum+=p[i]; if(maxs<p[i])maxs=p[i]; } Onit(); for(int i=maxs;i<=sum;i++){ if(sum%i)continue; width=i; count=sum/i; if(find(0,0)){ cout<<width<<endl; break; } } } return 0; }
用户cug_fish2008使用C++语言,通过编写特定算法解决了一个编程问题,包括内存管理和时间效率优化。
360

被折叠的 条评论
为什么被折叠?



