1 条题解
-
1
#include <bits/stdc++.h> using namespace std; int n,cnt[100]; int m; int a[100]; int sl,sc; int flag=0; int sum,maxx; void dfs(int l,int c,int p){ if(flag==1){ return; } if(c==sc){ flag=1; return; } for(int i=p;i<=m;i++){ if(cnt[a[i]]>0){ if(l+a[i]<=sl){ if(l+a[i]==sl){ cnt[a[i]]--; dfs(0,c+1,1); cnt[a[i]]++; } else{ cnt[a[i]]--; dfs(l+a[i],c,i); cnt[a[i]]++; } } if(l+a[i]==sl){ return; } if(l==0){ return; } } } } int main(){ cin>>n; for(int i=1;i<=n;i++){ int tmp; cin>>tmp; if(tmp>50){ continue; } sum+=tmp; maxx=max(maxx,tmp); if(cnt[tmp]==0){ m++; a[m]=tmp; cnt[tmp]++; } else{ cnt[tmp]++; } } sort(a+1,a+m+1,greater<int>()); for(int i=maxx;i<=sum;i++){ if(sum%i==0){ sc=sum/i; sl=i; dfs(0,0,1); if(flag==1){ cout<<i; return 0; } } } return 0; }
- 1
信息
- ID
- 148
- 时间
- 260ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者