错了好多次!!!!
千万不要在没有取遍所有元素的时候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语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:511 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:566 |
不容易系列2 (C语言代码)浏览:640 |
Pascal三角 (C语言代码)浏览:1252 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
WU-拆分位数 (C++代码)浏览:819 |
用筛法求之N内的素数。 (C语言代码)浏览:711 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
复数求和 (C语言代码)浏览:994 |