爆搜出奇迹

wangruichen 2023-07-28 20:01:55 6 返回题目

#include<ios>
using namespace std;
int ans=0,v[51],n,val;
void dfs(int dep,int sum){
	if(dep==n+1){
		if(sum==val)++ans;
		return;
	}
	if(sum+v[dep]<=val)dfs(dep+1,sum+v[dep]);
	dfs(dep+1,sum);
}
main(){
	scanf("%d",&n);
	for(int i=1;i<=n;++i)scanf("%d",v+i),val+=v[i];
	if(val&1)return!puts("0");
	val>>=1;
	dfs(1,0);
	printf("%d",ans>>1);
}
{{ vote && vote.total.up }}