原题链接:蓝桥杯算法训练VIP-和为T
错了好多次!!!!
千万不要在没有取遍所有元素的时候return!
思路是DFS,数位也可以写
保佑我的考试呜呜
参考代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cmath> #include<vector> #include<set> #include<sstream> #include<cstring> #include<utility> using namespace std; typedef long long ll; typedef long l; const int N = 110; int n,x[25],cnt;l a[25],t; void dfs(int b,l sum,int m,int c){ //printf(" %d %ld %d %d\n",b,sum,m,c); if(c==n&&m!=0&&sum==t){ cnt++; for(int i=m-1;i>=0;i--)printf("%ld ",a[x[i]]); cout<<endl; } //cout<<"ha"; if(c==n)return; dfs(0,sum,m,c+1); x[m]=c; dfs(1,sum+a[c],m+1,c+1); } int main(){ cin>>n; for(int i=n-1;i>=0;i--)cin>>a[i]; cin>>t; dfs(0,0,0,0); cout<<cnt; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复