嘿嘿(*^▽^*)
2025-07-13 11:18:12
发布于:广西
11阅读
0回复
0点赞
在其他机构里做过了,直接上代码
#include <bits/stdc++.h>
using namespace std;
long long n,a[100],cnt,len;
bool vis[100];
void f(long long anscnt,long long anslen,long long start)
{
if(anscnt == cnt - 1)
{
cout << len;
exit(0);
}
for(int i = start; i <= n; i++)
{
if(vis[i] == true)
{
continue;
}
if(anslen + a[i] > len)
{
continue;
}
if(anslen + a[i] == len)
{
vis[i] = true;
f(anscnt + 1,0,1);
vis[i] = false;
return;
}
else
{
vis[i] = true;
f(anscnt,anslen + a[i],i + 1);
vis[i] = false;
if(anslen == 0)
{
return;
}
}
}
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
sort(a + 1,a + n + 1);
while(a[n] > 50)
{
n--;
}
reverse(a + 1 , a + n + 1);
long long mx = a[n], sum = 0;
for(int i = 1; i <= n; i++)
{
sum += a[i];
}
for(int i = mx; i <= sum; i++)
{
if(sum % i != 0)
{
continue;
}
cnt = sum / i;
len = i;
f(0,0,1);
}
return 0;
}
这里空空如也
有帮助,赞一个