手机
当前位置:查字典教程网 >编程开发 >C#教程 >基于集合的子集与集合的全排列的相关问题
基于集合的子集与集合的全排列的相关问题
摘要:复制代码代码如下:#includeusingnamespacestd;//非递归求解所有的子集voidfun(inta[],intn){in...

复制代码 代码如下:

#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;

}

【基于集合的子集与集合的全排列的相关问题】相关文章:

使用C#调用系统API实现内存注入的代码

关于C# TabPage如何隐藏的问题

.net中前台javascript与后台c#函数相互调用问题

基于XSLT调试的相关问题

基于C#委托的深入分析

C# 游戏外挂实现核心代码

基于静态Singleton模式的使用介绍

关于Flyweight模式应用实践的相关介绍

基于C# 中可以new一个接口?的问题分析

基于switch你可能不知道的一些用法

精品推荐
分类导航