#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
void print_subset(int n) {
//通过二进制求对应所以组合的子集
for (int i = 0; i < (1 << n); i++) {
//2^n
for (int j = 0; j < n; j++) {
if (i & (1 << j))cout << j << " ";//检查i的最低位开始,若为1 输出j
}
cout << endl;
}
}
void print_set(int n, int k) {
for (int i = 0; i < (1 << n); i++) {
int num = 0, kk = i;
while (kk) {
kk = kk & (kk - 1);//清除kk中的最后一个1
num++;//num统计i中1的个数
}
if (num == k) {
//二进制数中的1有k个 符合条件
for (int j = 0; j < n; j++) {
if (i & (1 << j))cout << j << " ";
}
cout << endl;
}
}
}
void fun(int k, int n, int sum) {
//不降原则 递归搜索
if (k == 0) {
cout << sum << " ";
return;
}
for (int i = n - 1; i >= k - 1; i--)
fun(k - 1, i - 1, sum + arr[i]);
}
int main() {
int n, k;
/*cin>>n;
print_subset(n); */
/*cin >> n >> k;
print_set(n, k);*/
return 0;
}
算法 数的组合
猜你喜欢
转载自blog.csdn.net/Minelois/article/details/113855018
今日推荐
周排行