给定两个自然数n,r(20>n>r),输出从数1到n中按降序顺序取r个自然数的所有组合。
例如:n=5,r=3时,有如下组合:
5 4 3
5 4 2
5 4 1
5 3 2
5 3 1
5 2 1
4 3 2
4 3 1
4 2 1
3 2 1
#include<iostream> #include<iomanip> using namespace std; int a[30]; int main() { int n,r; do { cin>>n>>r; }while(n<=r); int i=1; a[1]=n; do{ if(i!= r) if(a[i]>r-i) { ___(1)____; i++; } else { ____(2)______; a[i]--; } else { for(int j=1;j<=r;j++) cout<<setw(3)<<a[j]; cout<<endl; if(a[r]==1) { i--; a[i]--; } else _____(3)______; } }while(a[1]>r-1); return 0; }