日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

二进制法生成1-n的子集

發布時間:2025/3/12 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二进制法生成1-n的子集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上代碼:

#include<iostream> using namespace std;void print_subset(int n, int s){for(int i=0;i<n;i++)if(s&(1<<i)){printf("%d",i);} printf("\n");} int main(){int n;cin>>n; for(int i=0;i<(1<<n);i++){print_subset(n,i);if(i!=0)cout<<"#num:"<<i<<endl;} }

列一下表

S=2時,對應的二進制是10, 那么在void函數的for循環中循環到1<<1時(此時i為1) s&(1<<i)為1 因此輸出1.s=3時,對應的二進制是11, 在void函數的for循環中循環到(1<<0,二進制就是01), s&(1<<0) 二進制為 01 >0 輸出0, 在void函數的for循環中循環到(1<<1,二進制就是10), s&(1<<1)二進制為10 > 0 輸出1后面以此類推

子集是和上面這些數比的,輸出的話輸出的是i

——————————
s:11(3)
與之做&操作的二進制數: 1 ,10(1<< i,i=0,1)
1(i=0),10 (i=1)
因此當s為3時 輸出01
——————————

那么看一下main函數中的循環,i從0到3循環,依次輸出:
s:0 輸出:換行
s:1 輸出:0
s:2 輸出; 1
s:3 輸出:01

上面說打印(0,1,2.。。。n-1)的子集:
如果打印(1,。。。,n),只需輸出i+1

總結

以上是生活随笔為你收集整理的二进制法生成1-n的子集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。