暴力求解法--生成子集
来源:互联网 发布:2003版办公软件 编辑:程序博客网 时间:2024/06/04 20:04
#include <iostream>
using namespacestd;
//推荐二进制法,所以放在最前面
void print_subset(int n,int s)
{
for (int i = 0; i < n; i ++) {
if (s & (1 << i)) printf("%d",i);
} printf("\n");
}
void print_subset_bit(int n)
{
for (int i = 0; i < (1 << n); i ++) {
print_subset(n, i);
}
}
//增量构造法void print_subset_0n(int n,int *a,int cur)//生成0 - n-1的子集
{
for (int i =0; i < cur; i ++) printf("%d",a[i]);
printf("\n");
int s = cur ? a[cur -1] +1:0;//cur为0,就从0开始找子集,否则从前一个数+ 1开始往下找
for (int i = s; i < n; i ++) {
a[cur] = i;
print_subset_0n(n, a, cur +1);
}
}
//位向量法
void print_subset_01(int n,int *b,int cur)
{
if (cur == n) {
for (int i =0; i < cur; i ++) {
if (b[i]) {
printf("%d",i);
}
}printf("\n");
return ;
}
b[cur] = 1;
print_subset_01(n, b, cur +1);
b[cur] = 0;
print_subset_01(n, b, cur +1);
}
int main()
{
int a[10];
int b[10];
print_subset_0n(4, a,0);
print_subset_01(4, b,0);
print_subset_bit(4);
return0;
}
- 暴力求解法--生成子集
- 暴力求解法之枚举子集
- 《算法竞赛入门经典》-【第七章:暴力求解法】-7.3:子集生成
- 【算法学习笔记】14.暴力求解法02 子集生成的三种方法
- 算法竞赛入门经典:第七章 暴力求解法 7.8子集生成
- 暴力求解法_子集生成(增量构造法,位向量法,二进制法)
- 暴力求解法--生成全排列
- 暴力求解法入门
- 暴力求解法
- 暴力求解法中的枚举排列,生成全排列
- 暴力求解法 最大乘积
- 暴力求解法--简单枚举
- 暴力求解法-简单枚举
- Harmonic Number(暴力求解法)
- 暴力求解法 之 简单枚举
- 暴力求解法 之 枚举排列
- 暴力求解法-双基回文数
- 暴力求解法 之 简单枚举
- 7.29 队列
- UVa 10325 The Lottery 【容斥】【入门】
- Quicksum
- SpringBoot13-springboot核心-基本配置
- Leetcode_80_Remove Duplicates from Sorted Array II
- 暴力求解法--生成子集
- 安卓源代码核心结构
- Android Fragment
- jQuery ajax中使用serialize() 方法提交表单数据
- 7.29 队列
- 触摸屏代码分析——优化措施
- F
- 用C语言打印101~200之间的素数
- 浮动元素的垂直居中问题