1 solutions
-
0
C++ :
#include<iostream> #include<cstdio> using namespace std; #define M 100 class SumOfSub { friend void sumofsub(); private: void Backtrack(int t); int count; int n; int c; int cw; int x[M]; int bestx[M]; int num[M]; }; void SumOfSub::Backtrack(int t) {//搜索t第层 int i,j; if(t>n)//到达叶子节点 { if(cw == c && count ==0) { count++; for(i=1;i<=n;i++) { if(x[i]==1) { printf("%d ",num[i]); } } printf("\n"); } return; } else { if(cw+num[t]<= c) { cw+=num[t]; x[t]=1; Backtrack(t+1); cw-=num[t]; } x[t]=0; Backtrack(t+1); } } void sumofsub() { int i,j; SumOfSub s; s.cw = 0; s.count =0; scanf("%d %d",&s.n,&s.c); for(j=1;j<=s.n;j++) { scanf("%d",&s.num[j]); } for(j=1;j<=s.n;j++) { s.x[j]=0; } s.Backtrack(1); if(s.count == 0) { printf("No Solution!"); } } int main() { sumofsub(); return 0; }
- 1
Information
- ID
- 18179
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By