数据很弱,可以直接搜索加剪枝
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int ans[100];
int n, r;
void print(int r) {
for (int i = 0; i < r; i++)
cout << right << setw(3) << ans[i];
cout << endl;
}
void DFS(int level, int i) {
if (level == n + 1) {
if (i == r) {
print(r);
}
return;
}
else if (i == r) {
print(r);
return;
}
else {
ans[i] = level;
DFS(level + 1, i + 1);
DFS(level + 1, i);
}
}
int main()
{
cin >> n >> r;
DFS(1, 0);
return 0;
}