体积

就是给你若干个数字,看看一共能组成多少种不同的和

指数型递归的经典应用指数型递归 - 小志61314 - 博客园 (cnblogs.com)

本来没啥头绪,一直dfs不出来,但想了一下,这些数都是有编号的呀,就dfs编号,编号相加就可以了

复制代码
#include<iostream>
#include<set>
using namespace std;
int n,sum;
const int N=20;
bool st[N];
int a[N];
set<int> q;
void dfs(int u)//深度,就是每一层为选择的第几个数字 
{
    if(u>n)
    {
        sum=0;
        for(int i=1;i<=n;i++)
            if(st[i])
                sum+=a[i];
        q.insert(sum);
        return ;
    }
    st[u]=true;
    dfs(u+1);
    st[u]=false;
    dfs(u+1);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    dfs(1);
    cout<<q.size()-1;
    return 0;
}
/*
指数型递归
每个数分为选和不选两种方案 
两个分支,左边为选,右边为不选 

*/
复制代码

要把0的那个答案减去

posted @   小志61314  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示