日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法竞赛入门经典读书笔记(四)7.3子集生成

發(fā)布時間:2025/6/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法竞赛入门经典读书笔记(四)7.3子集生成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

輸入一個數(shù)n,輸出集合0123n-1的全部子集

方法一:增量構(gòu)造法:

#include?<iostream>

using?namespace?std;

void?print_subset(int?n,int?*A,int?cur){

for(int?i=0;i<cur;i++)

cout<<A[i]<<"?";

cout<<endl;

int?s=cur?A[cur-1]+1:0;

for(int?i=s;i<n;i++){

A[cur]=i;

print_subset(n,A,cur+1);

}

}

int?main(){

cout<<"請輸入一個數(shù),輸出集合0123n-1的全部子集\n";

int?n,cur=0;

cin>>n;

int?A[100];

print_subset(n,A,cur);

}

方法二:位向量法

#include?<iostream>

using?namespace?std;

void?print_subset(int?n,int?*A,int?cur){

if(cur==n){

for(int?i=0;i<cur;i++)

if(A[i])cout<<i<<"?";

cout<<endl;

return;

}?

A[cur]=1;

print_subset(n,A,cur+1);

A[cur]=0;

print_subset(n,A,cur+1);

}

int?main(){

cout<<"請輸入一個數(shù),輸出集合0123n-1的全部子集\n";

int?n,cur=0;

cin>>n;

int?A[100];

print_subset(n,A,cur);

}

二進制法

#include?<iostream>

using?namespace?std;

void?print_subset(int?n,int?s){??

for(int?i=0;i<n;i++)

if(s&(1<<i))?cout<<i;

cout<<endl;

}

int?main(){

cout<<"請輸入一個數(shù),輸出集合0123n-1的全部子集\n";

int?n;

cin>>n;

for(int?i=0;i<(1<<n);i++)

print_subset(n,i);

}

總結(jié)

以上是生活随笔為你收集整理的算法竞赛入门经典读书笔记(四)7.3子集生成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。