基于集合的子集與集合的全排列的相關(guān)問(wèn)題
#include<iostream>
using namespace std;
//非遞歸求解所有的子集
void fun(int a[] , int n)
{
int i = 0 , j ;
while(i < (1<<n)) //2的n次方
{
for(j = 0 ; j < n ; j ++)
{
if(i&(1<<j))
{
cout<<a[j]<<"\t";
}
}
cout<<endl;
i++;
}
}
//遞歸求解所有的子集
void print(int a[],bool flag[],int k,int length)
{
if(k>=length)
{
for(int i=0;i<length;i++)
{
if(flag[i]) cout<<a[i]<<"\t";
}
cout<<endl;
return ;
}
for(int j=0;j<2;j++)
{
if(j==0)
{
flag[k]=true;
print(a,flag,k+1,length);
flag[k]=false;
}
else
{
flag[k]=false;
print(a,flag,k+1,length);
flag[k]=true;
}
}
}
//集合的全排列算法
void Perm(int list[], int k ,int length)
{
if(k>=length)
{
for(int i=0;i<length;i++)
cout<<list[i]<<"\t";
cout<<endl;
return ;
}
for( int j=k;j<length;j++)
{
swap(list[k],list[j]);
Perm(list,k+1,length);
swap(list[k],list[j]);
}
}
int main()
{
int list[]={1,2,3,4};
bool flag[]={false,false,false,false};
fun(list,4);
print(list,flag,0,4);
Perm(list,0,4);
return 0;
}
相關(guān)文章
Unity3D使用UGUI開(kāi)發(fā)原生虛擬搖桿
這篇文章主要為大家詳細(xì)介紹了Unity3D使用UGUI開(kāi)發(fā)原生虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
c#之利用API函數(shù)實(shí)現(xiàn)動(dòng)畫窗體的方法詳解
本篇文章是對(duì)c#中利用API函數(shù)實(shí)現(xiàn)動(dòng)畫窗體的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
詳解C#實(shí)例化對(duì)象的三種方式及性能對(duì)比
這篇文章主要介紹了C#實(shí)例化對(duì)象的三種方式及性能對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
winform 使用Anchor屬性進(jìn)行界面布局的方法詳解
這篇文章主要介紹了winform 使用Anchor屬性進(jìn)行界面布局的方法,有需要的朋友可以參考一下2013-12-12

