国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

基于集合的子集與集合的全排列的相關問題

2020-01-24 03:22:39
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平原县| 山阳县| 墨竹工卡县| 耒阳市| 兴文县| 开江县| 冷水江市| 长宁县| 长白| 汶川县| 桐柏县| 舒兰市| 井冈山市| 佛山市| 西乌珠穆沁旗| 横峰县| 大足县| 彭州市| 肥城市| 个旧市| 营山县| 休宁县| 松原市| 新民市| 宝鸡市| 肥乡县| 怀来县| 禹城市| 黄骅市| 蒙山县| 栾城县| 莱芜市| 潮州市| 靖州| 宜君县| 武鸣县| 郎溪县| 沁源县| 赣榆县| 津市市| 临潭县|