源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-06-28 00:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于集合的子集与集合的全排列的相关问题
[u]复制代码[/u] 代码如下:
#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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部