zoukankan      html  css  js  c++  java
  • 子集生成

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std; 
    int vis[100];
    int set[100];
    int cpset[100];
    int cmp(int a,int b){
        return a>b;
    }
    void getSet(int n){
        for(int i=0;i<n;i++){
            cin>>set[i];
            vis[set[i]]++;
        } 
        sort(set,set+n,cmp);
    }
    void subset(int cnt,int n,int pos){
        if(cnt){
            for(int i=0;i<n;i++){
                if(!i||(set[i]!=set[i-1])){
                    if(vis[set[i]]){
                        vis[set[i]]--;
                        cpset[pos]=set[i];
                        subset(cnt-1,n,pos+1);
                        vis[set[i]]++;
                    }
                }
            }
        }
        else{
            for(int i=0;i<n;i++){
                if(cpset[i])
                cout<<cpset[i]<<" ";
            }
            cout<<endl;
        }
    }
    int main(){
        int n;
        while(cin>>n){
            memset(vis,0,sizeof(vis));
            memset(cpset,0,sizeof(cpset));
            getSet(n);
            
            for(int i=1;i<n+1;i++){
                subset(i,n,0);
            }
        }
    } 

    定序可避免重复!!!!

  • 相关阅读:
    第七天冲刺
    MySQL管理
    LNMP环境搭建
    docker使用笔记
    Laravel5.2使用笔记
    Linux使用笔记
    Redis3.2.11在centos9安装与卸载
    Ubuntu系统
    Linux下安装与卸载PHP
    安装Linux
  • 原文地址:https://www.cnblogs.com/z-bear/p/8425837.html
Copyright © 2011-2022 走看看