比赛 国庆欢乐赛2 评测结果 TAAAAAAAATTTTTTTATTT
题目名称 毛一琛 最终得分 45
用户昵称 梦那边的美好WA 运行时间 35.596 s
代码语言 C++ 内存使用 3.50 MiB
提交时间 2025-10-04 09:59:55
显示代码纯文本
#include <iostream> 
using namespace std;
int n,m[25];
int a[25];
bool ch(int t,int k,long long s1,long long s2){
    if(t==k+1){
        if(s1==s2) return 1;
        return 0;
    }
    if(ch(t+1,k,s1+a[t],s2)) return 1;
    if(ch(t+1,k,s1,s2+a[t])) return 1;
    return 0;
}
long long ans=0;
void dfs(int t,int k,long long sum){
    if(t==n+1){
        if(k==0||(sum&1)) return;
        if(ch(1,k,0,0)) ans++;
        return;
    }
    a[k+1]=m[t];
    dfs(t+1,k+1,sum+m[t]);
    dfs(t+1,k,sum);
    return;
}
int main(){
    freopen("subsets.in","r",stdin);
    freopen("subsets.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>m[i];
    }
    dfs(1,0,0);
    cout<<ans;
    return 0;
}