基于集合的子集与集合的全排列的相关问题
时间:2021-05-14 10:38:05|栏目:.NET代码|点击: 次
复制代码 代码如下:
#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;
}
上一篇:asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
栏 目:.NET代码
下一篇:C# 解析 Excel 并且生成 Csv 文件代码分析
本文标题:基于集合的子集与集合的全排列的相关问题
本文地址:http://www.codeinn.net/misctech/121258.html






