模仿深入浅出书上的思路
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll get_digit(ll s,ll n,vector<ll>&a){
ll cnt=0;
for(ll i=0;i<n;++i){
if(s&(1<<i)){
a.push_back(i+1);
cnt++;
}
}return cnt;
}
void solve(){
ll n;cin>>n;
ll r;cin>>r;
ll U=1<<n;
for(ll i=0;i<U;++i){
vector<ll>a;
ll dgt=get_digit(i,n,a);
sort(a.begin(),a.end());
if(dgt==r) {
for(auto &j:a)cout << setw(3) << j;
cout<<"\n";
}
}
}
int main(){
ll T=1;
while(T--)solve();
return 0;
}
不知道为啥只过了一半的得分点,感觉能实现全排列啊