哈罗大家好,我又是那个牛奶小咖啡,我又来求助啦!
虽然我的代码里有注释,但是依然可读性极差,大家将就着看吧~
20分WA两个点
// #include <bits/stdc++.h> // 本地不能用万能头QwQ
#include <cmath>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
int n, m;
bool flag[15] = {};
void srh(int k, int cnt) {// k指第k个数有没有求,cnt指现在取到那一个了
if (k > n) {// 如果看过的数比总数还要多
if (cnt == m) {// 如果取得数等于应取得数m
for (int i = 1; i <= n; i++) {// 输出
if (flag[i] == 1) {
cout << setw(3) << i << " ";
}
}
cout << endl;
}
return;
}
flag[k] = true;
srh(k + 1, cnt+1); // 每次都多看一个数,如果这个数取的话,取得数cnt+1
flag[k] = false;
srh(k + 1, cnt);// 没取得话,就不用多一个了
}
int main() {
cin >> n >> m;
srh(1, 0);// 进去先判断第一个数用不用取
// 现在一个数还没求呢,所以写0
return 0;
}