一种轻便的生成全集合的方法——二进制法

 1 #include <stdio.h>
 2
 3 void print_subset(int n, int i) {  // 打印{0, 1, 2, ..., n-1}的子集S
 4   for(int j = 0; j < n; j++)
 5     if(i&(1<<j)) printf("%d ", j); // 这里利用了C语言“非0值都为真”的规定
 6   printf("\n");
 7 }
 8
 9 int main() {
10   int n = 5;
11   for(int i = 0; i < (1<<n); i++)  // 枚举各子集所对应的编码 0, 1, 2, ..., 2n-1
12     print_subset(n, i);
13   return 0;
14 }

源码大部分是copy的(呵呵)

时间: 2024-10-13 18:54:19

一种轻便的生成全集合的方法——二进制法的相关文章

子集生成——增量构造法+位向量法+二进制法

1.增量构造法: 原理图: 1 // 此算法仅用于输出下标,实际运用应输入另一个数组来进行数据的储存 2 #include <bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 typedef unsigned long long ull; 6 #define INF 0X3f3f3f3f 7 const ll MAXN = 1e3 + 7; 8 const ll MOD = 1e9 + 7; 9 int a[10];

【模板】子集生成 二进制法

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置. 子集生成问题:给出一个正整数n,输入含有1~n共n个元素的集合的所有子集. 模板代码(qwq表示空集): 1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 6 inline void read(int &x) 7 { 8 char ch = getchar(),c = ch;

子集生成 --二进制法

用二进制表示{0,1,2,3...n-1}的子集s:从右往左第i位表示元素i是否在集合s中.图2表示10100110是如何展示了集合{1,2,5,7}的. 注意:为了方便,最右边的为总是对应元素0,而不是元素1: 异或最重要的性质就是开关型---异或两次相当于没有异或,即A^B^B=A 根据图1不难看出,A&B,A|B和A^B分别对应集合的交.并和对称差. 1 void print_subset(int n,int s)//s的每一位代表所在为位置的数,当为1的时候表示i存在子集中,否则...

一键生成JNI头文件方法二

经常使用java的同学一定都接触过JNI(Java Native Interface)吧.JNI为我们提供了java<---->C/C++之间的接口,使得我们可以在java中调用C程序,以便实现一些计算复杂度较高的程序(如图像处理.信号处理等).另外,也方便我们使用很多优秀的C库. 使用javah生成本地方法头文件 JNI怎么使用在这里我就不介绍了.今天主要来说一下JNI的本地方法头文件如何生成,以及怎么方便地在eclipse中一键生成.当你使用JNI时,需要在你的java程序中声明一个类,并

子集生成——二进制法

按位运算大法!! 1 #include<iostream> 2 using namespace std; 3 4 int a[100]; 5 int n; 6 void subset(){ 7 for(int i=1;i<=(1<<n);i++){ 8 for(int j=0;j<n;j++){ 9 if(i&(1<<j)){ //按位与,左位移 10 cout<<a[j]<<" "; 11 } 12 }

一种简单实用的全屏方法

实现程序全屏幕显示的思路有很多种,最常见的一种就是: 1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息.非客户区窗口的显隐信息,以便全屏幕显示时恢复窗口原状: 2)通过API函数GetDesktopWindow()得到桌面窗口,由GetWindowRect()得到显示器的尺寸: 3)通过AdjustWindowRect()来计算当客户区大小为屏幕大小时相应的窗口大小: 4)通过SetWindowPlacement

Hibernate的几种主键生成策略

主键类型: 业务主键(natural key):业务主键的值是来源于一个业务数据. 代理主键(surrogate key):代理主键需要采用一种方式来生成某个唯一值. 代理主键的生成策略: 1.hibernate的主键生成策略只能用于代理主键 2.不同的主键生成策略需要的内容也是不同. Hibernate的主键生成策略: 1.assigned:由应用程序负责生成主键标识符,通常使用在数据库中没有代理主键,使用的主键与业务相关的情况,即使用的是业务主键.这种主键的生成方式不建议使用,在数据库表设计

CSS之生成全屏背景图片

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>CSS之生成全屏背景图片</title> <link rel="stylesheet" href="http://files.cnblogs.com/files/caidupingblogs/backgroundima

分享10种风格迥异的全屏遮罩层效果

今天,我们想给大家分享一些全屏遮罩效果的灵感.像任何其它的UI组件一样,网页设计不断有新的趋势和风格出现,我们想尝试的遮罩有一些微妙的,还有奇特的效果.这些遮罩的特别之处在于,他们没有像模态窗口那样固定大小而是占据整个屏幕,因此创建效果时,人们必须考虑到这一点. 在线演示      源码下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10