二进制写法求调!50分
查看原帖
二进制写法求调!50分
1051616
duck_lite楼主2025/2/3 21:09

模仿深入浅出书上的思路

#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;
}

不知道为啥只过了一半的得分点,感觉能实现全排列啊

2025/2/3 21:09
加载中...