1 solutions
-
0
C++ :
#include <iostream> using namespace std; #define Max 100 int n,m;//n个数中选出若干数,总和为m int v[Max];//标记n个数是否被选,1选,0不选 void f(int k,int sum) { int i; if(k>n||sum<0) return;//剪枝 if(sum==0) { for(i=0;i<k;i++) if(v[i]) cout<<i+1<<' '; cout<<endl; return; } v[k]=0;//不选第k号 f(k+1,sum);//递归 v[k]=1;//选第k号 f(k+1,sum-k-1);//递归 } int main() { cin>>n>>m; f(0,m); return 0; }
- 1
Information
- ID
- 18631
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By