子集生成(三种办法)
2016-09-12 20:39
232 查看
下面附上三种生成子集的算法代码,来自算法竞赛入门经典
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<math.h>
using namespace std;
#define ll long long
const int INF=0x7fffffff;
const int N=100000+2;
int n,A[16],B[16];
void dfs1(int cur)
{ //增量构造法
int i;
for (i=0;i<cur;i++)
printf("%d ",A[i]);
printf("\n");
int s=cur?A[cur-1]+1:1;
for (i=s;i<=n;i++)
{
A[cur]=i;
dfs1(cur+1);
}
}
void dfs2(int cur)
{ //位向量法
int i;
if (cur==n+1)
{
for (i=1;i<cur;i++)
if (B[i])
printf("%d ",i);
printf("\n");
return;
}
B[cur]=1;
dfs2(cur+1);
B[cur]=0;
dfs2(cur+1);
}
void dfs3(int cur)
{ //二进制法
int i;
for (i=0;i<n;i++)
if (cur&(1<<i))
printf("%d ",i);
printf("\n");
}
int main()
{
int i;
scanf("%d",&n);
//dfs1(0);
//dfs2(1);
for (i=0;i<(1<<n);i++)
dfs3(i);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
#include<math.h>
using namespace std;
#define ll long long
const int INF=0x7fffffff;
const int N=100000+2;
int n,A[16],B[16];
void dfs1(int cur)
{ //增量构造法
int i;
for (i=0;i<cur;i++)
printf("%d ",A[i]);
printf("\n");
int s=cur?A[cur-1]+1:1;
for (i=s;i<=n;i++)
{
A[cur]=i;
dfs1(cur+1);
}
}
void dfs2(int cur)
{ //位向量法
int i;
if (cur==n+1)
{
for (i=1;i<cur;i++)
if (B[i])
printf("%d ",i);
printf("\n");
return;
}
B[cur]=1;
dfs2(cur+1);
B[cur]=0;
dfs2(cur+1);
}
void dfs3(int cur)
{ //二进制法
int i;
for (i=0;i<n;i++)
if (cur&(1<<i))
printf("%d ",i);
printf("\n");
}
int main()
{
int i;
scanf("%d",&n);
//dfs1(0);
//dfs2(1);
for (i=0;i<(1<<n);i++)
dfs3(i);
return 0;
}
相关文章推荐
- 商业化IM 客户端设计---Message模型
- 在同一台电脑上通过SSH连接不同GitHub
- TextView的基本属性
- VC操作word和excel文件,查询与读写[依赖office环境]
- 判断MAP集合中元素非空方法
- javascript 第一日(基本概念)
- 内存对齐问题
- 不能安装vm tools ,虚拟机打开了,一直是灰色的
- 2016.9.12
- iOS开发之蓝牙通信
- 解决Ubuntu安装openssh-server依赖问题
- Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)
- android SharedPreferences的一般用法(存取清删)
- ExtJs教程----利用 Sencha cmd 生成应用程序
- RHEL7 的注册
- poj 2983 Is the Information Reliable?
- corosync+pacemaker实现openstack HA(一)
- 励志
- HDU 5875 Function
- HDU 5876 Sparse Graph