fork(1) download
  1.  
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. #define g(n) scanf("%d",&n)
  7. // #define g(n) inp(n)
  8. #define gl(n) scanf("%lld", &n)
  9. #define f(i,n) for(int i=0; i<n; i++)
  10. #define pb push_back
  11. #define mp make_pair
  12. #define fab(i,a,b) for(int i=a; i<=b; i++)
  13. #define test(t) while(t--)
  14. #define getcx getchar//_unlocked
  15.  
  16. typedef long long int ll;
  17. typedef pair<int,int> pii;
  18. typedef vector<int> vi;
  19. typedef vector< vi > vvi;
  20.  
  21. void print(vector<int> ar){
  22. for(int i=0; i<ar.size(); i++)
  23. cout << ar[i] << " ";
  24. cout << endl;
  25. }
  26.  
  27. void ncr(int* ar, int n, int r, vector<int>& selected)
  28. {
  29. if(r>n || r<0)
  30. return;
  31. if(r==0)
  32. print(selected);
  33. else
  34. {
  35. //select ar[0]
  36. selected.push_back(ar[0]);
  37. ncr(ar+1, n-1, r-1, selected);
  38. selected.pop_back();
  39.  
  40. //do not select ar[0]
  41. ncr(ar+1, n-1, r, selected);
  42. }
  43.  
  44. }
  45.  
  46. int main()
  47. {
  48. int ar[] = {1,2,3,4,5,6};
  49. vi v(0);
  50. ncr(ar, 6, 3, v);
  51. return 0;
  52. }
Success #stdin #stdout 0s 2860KB
stdin
Standard input is empty
stdout
1 2 3 
1 2 4 
1 2 5 
1 2 6 
1 3 4 
1 3 5 
1 3 6 
1 4 5 
1 4 6 
1 5 6 
2 3 4 
2 3 5 
2 3 6 
2 4 5 
2 4 6 
2 5 6 
3 4 5 
3 4 6 
3 5 6 
4 5 6