#include<iostream>
using namespace std;
int n,r,a[100],m=0;
void dfs(int k, int cnt)
{
if (cnt == r)
{
for (int l = 0; l < cnt; l++)
printf("%3d", a[l]);
cout << endl;
return;
}
if (k + 1 > n)
return;
a[m++] = k+1;
dfs(k + 1, cnt + 1);//choose k+1
m--;
dfs(k + 1, cnt);//skip k+1
}
int main()
{
cin >> n>>r;
dfs(0,0);
}
总结:
对每个状态选与不选的典型例题。