充分利用二进制,代码如下:
#include <bits/stdc++.h>
using namespace std;
int a[15];
int b[1<<15];//把是否使用木棍的情况用二进制表示
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}//输入原始木棍长度
for(int i=0;i<(1<<n);i++)//列举每一种二进制情况
{
for(int j=0;j<n;j++)
{
if(i&(1<<j))
{
b[i]=b[i]+a[j];
}
}
}
int ans=0;
for(int i=0;i<(1<<n);i++)
{
for(int j=0;j<(1<<n);j++)
{
if(!(i&j)&&b[i]==b[j])//确保出现两种不同情况下的相同值
{
ans=max(ans,b[i]);//不断更新最大值
}
}
}
cout<<ans;
return 0;
}