c++求集合幂集 源代码及算法优化
来源:互联网 发布:气候变化 知乎 编辑:程序博客网 时间:2024/05/19 07:07
//求集合幂集的算法:这是目前最高效的算法By迷若烟雨
#include<iostream.h>
#include<windows.h>
#include<fstream.h>
int qiumiji(char *a,int len)//找所有子集的函数,集合放在数组a中,长度为len,直接移位操作,这是目前最高效的算法
{
int i=0,j=0;
bool flag=false;
cout<<"{NULL}"<<endl;
for(i=1;!flag;i++)
{
cout<<"{";
flag=true;
for(j=0;j<len;j++)
{
if((i>>j)&1)
cout<<a[j]<<" ";
else
flag=false;
}
cout<<"/b}"<<endl;
}
return i;
}
int main()
{
int num;//num代表集合长度
int count=0;
cout<<"Please input the number of aggerate:"<<endl;
cin>>num;
char *item=new char[num];
for(int i=0;i<num;i++)
{
cout<<"Please input the "<<i+1<<"th element:";
cin>>item[i];
}
int t0=GetTickCount();
count=qiumiji(item,num);
int t1=GetTickCount();
cout<<"总数:"<<count<<endl;
cout<<"求长度为"<<num<<"的集合的幂集所花费的时间为:"<<t1- t0<<"ms."<<endl;
delete [] item;
return 0;
}
时间复杂度为O(2^n*n),求10个元素的时间在265ms左右,比上一个算法效率提高了不少。
- c++求集合幂集 源代码及算法优化
- C语言-数据结构-快速排序及优化-源代码
- C语言-数据结构-冒泡排序及优化-源代码
- C语言-数据结构-插入排序及优化-源代码
- 【C语言】五子棋胜负判定算法及源代码
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集
- 求集合的幂集
- 求集合的幂集
- 求集合的幂集
- 求集合的幂集
- 求集合的幂集
- 求集合的幂集
- MD5算法及源代码
- 分水岭算法及源代码
- 数据结构:求集合差集(c/c++)
- 求集合子集的算法
- 矩阵求逆算法及程序实现(C++)
- C语言及程序设计初步例程-39 求素数算法
- decode
- 计算机考研复习经验
- (转载)GridView隐藏列取值解决方案
- u-bo0移植
- Linux权限管理
- c++求集合幂集 源代码及算法优化
- ConfigurationManager类读取配置文件链接字符串
- 发现简单下载百度文库的新招
- 刚刚开始学习编程!
- FPGA学习中的小知识2
- 意外收获
- 子网掩码的计算与划分详解
- 想事、做事和成事
- 加入csdn