#include <iostream> using namespace std; int combine(int a[], int n, int m) { m = m > n ? n : m; int* order = new int[m+1]; for(int i=0; i<=m; i++) order[i] = i-1; int count = 0; int k = m; bool flag = true; while(order[0] == -1) { if(flag) { for(int i=1; i<=m; i++) { cout << a[order[i]] << " "; } cout << endl; count++; flag = false; } order[k]++; if(order[k] == n) { order[k--] = 0; continue; } if(k < m) { order[++k] = order[k-1]; continue; } if(k == m) flag = true; } delete[] order; return count; } int main() { const int M = 3; const int N = 2; int a[M]; int b[N]; for(int i=0;i<M;i++) a[i] = i+1; cout<<combine(a,M,N)<<endl; system("pause"); return 0; }