基于集合的子集与集合的全排列的相关问题

代码如下:

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

(0)

相关推荐

  • Python基于回溯法子集树模板解决全排列问题示例

    本文实例讲述了Python基于回溯法子集树模板解决全排列问题.分享给大家供大家参考,具体如下: 问题 实现 'a', 'b', 'c', 'd' 四个元素的全排列. 分析 这个问题可以直接套用排列树模板. 不过本文使用子集树模板.分析如下: 一个解x就是n个元素的一种排列,显然,解x的长度是固定的,n. 我们这样考虑:对于解x,先排第0个元素x[0],再排第1个元素x[1],...,当来到第k-1个元素x[k-1]时,就将剩下的未排的所有元素看作元素x[k-1]的状态空间,遍历之. 至此,套用子

  • 基于集合的子集与集合的全排列的相关问题

    复制代码 代码如下: #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))            {        

  • java求解集合的子集的实例

     java求解集合的子集的实例 方式1:我们知道子集个数 2的n次方 比如a,b,c的子集 * 000  0  {}      *001  1   a      *010  2   b      *011  3   a,b (b,a)      *100  4   c      * 101  5   a,c (c,a)      * 110  6   b,c (c,b)      * 111  7   a,b,c 利用二进制的对应关系 @Test public void test1() thro

  • python判断一个集合是否为另一个集合的子集方法

    实例如下所示: a = [1,2,3,4] b = set([1,2]) b.issubset(a) 以上这篇python判断一个集合是否为另一个集合的子集方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: python判断一个集合是否包含了另外一个集合中所有项的方法 深入解析Python中的集合类型操作符

  • Python实现求一个集合所有子集的示例

    方法一:回归实现 def PowerSetsRecursive(items): """Use recursive call to return all subsets of items, include empty set""" if len(items) == 0: #if the lsit is empty, return the empty list return [[]] subsets = [] first_elt = items[0]

  • Java底层基于二叉搜索树实现集合和映射/集合Set功能详解

    本文实例讲述了Java底层基于二叉搜索树实现集合和映射功能.分享给大家供大家参考,具体如下: 前言:在第5章的系列学习中,已经实现了关于二叉搜索树的相关操作,详情查看第5章即可.在本节中着重学习使用底层是我们已经封装好的二叉搜索树相关操作来实现一个基本的集合(set)这种数据结构. 集合set的特性: 集合Set存储的元素是无序的.不可重复的.为了能达到这种特性就需要寻找可以作为支撑的底层数据结构. 这里选用之前自己实现的二叉搜索树,这是由于该二叉树是不能盛放重复元素的.因此我们可以使用二叉搜索

  • Python基于回溯法子集树模板解决最佳作业调度问题示例

    本文实例讲述了Python基于回溯法子集树模板解决最佳作业调度问题.分享给大家供大家参考,具体如下: 问题 给定 n 个作业,每一个作业都有两项子任务需要分别在两台机器上完成.每一个作业必须先由机器1 处理,然后由机器2处理. 试设计一个算法找出完成这n个任务的最佳调度,使其机器2完成各作业时间之和达到最小. 分析: 看一个具体的例子: tji 机器1 机器2 作业1 2 1 作业2 3 1 作业3 2 3 最优调度顺序:1 3 2 处理时间:18 这3个作业的6种可能的调度方案是1,2,3:1

  • Java 深入浅出掌握Map集合之双列集合

    目录 前言 Map集合 Map概述 Map特点 Map集合的功能 Map集合的遍历 Map集合的各个子类 集合框架图 总结 前言 友友们,大家好哇!这一期我为大家带来双列集合(Map)的相关知识点讲解,那么什么是双列集合呢?Map集合就是采用了key-value键值对映射的方式进行存储.通俗的讲,和查字典类似,查字典时,我们通过偏旁或笔画等查询汉字,集合里通过key找到对应的value,用学生类来说,key相当于学号,value对应name. Map集合 Map概述 Map是一种依照键(key)

  • Python基于回溯法子集树模板实现8皇后问题

    本文实例讲述了Python基于回溯法子集树模板实现8皇后问题.分享给大家供大家参考,具体如下: 问题 8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 分析 为了简化问题,考虑到8个皇后不同行,则每一行放置一个皇后,每一行的皇后可以放置于第0.1.2.....7列,我们认为每一行的皇后有8种状态.那么,我们只要套用子集树模板,从第0行开始,自上而下,对每一行的皇后,遍历它的8个状态即可. 代码: ''' 8皇后问题 '''

  • 编写高质量代码改善C#程序——使用泛型集合代替非泛型集合(建议20)

    软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类.不管是数组还是集合类,它们都有各自的优缺点.如何使用好集合是我们在开发过程中必须掌握的技巧.不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行. 建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况: Array

随机推荐