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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种轻便的生成全集合的方法——二进制法相关的知识,希望对你有一定的参考价值。

 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的(呵呵)

以上是关于一种轻便的生成全集合的方法——二进制法的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 索引

什么是耦合?解耦合的方法有哪几种?

有没有一种简单的方法来抑制 Oracle 中集合的 XML 行标记?

模板子集生成 二进制法

专知荟萃24视频描述生成(Video Captioning)知识资料全集(入门/进阶/论文/综述/代码/专家,附查看)

一种高效整数开平方算法:逐比特确认法