开荒(正经DFS题解有注释)
2025-08-10 13:17:39
发布于:江苏
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
set<int> s;//set去重
void dfs(int i,int sum){//i:经过了几个 sum:总体积
if(i>n){
s.insert(sum);
return ;
}
dfs(i+1,sum+a[i]);//取a[i]
dfs(i+1,sum);//不取a[i]
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(1,0);//dfs()枚举所有情况
cout<<s.size()-1;//减掉一个没取的情况
return 0;
}
这里空空如也
有帮助,赞一个