体积
就是给你若干个数字,看看一共能组成多少种不同的和
指数型递归的经典应用指数型递归 - 小志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的那个答案减去
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具