zoukankan      html  css  js  c++  java
  • 不重复排列

    输入n个数值,输出由这n个数构成的排列,不允许出现重复的项

    输入

    3

    1 1 2

    输出

    1 1 2

    1 2 1

    2 1 1

    代码

    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn = 100;
    int rcd[maxn],num[maxn],vis[maxn];
    int n,m;
    int read_input()
    {
        if(scanf("%d",&n)==EOF)
            return 0;
        m=0;
        memset(vis,0,sizeof(vis));
        int i,j;
        for( i=0;i<n;i++){
            int val;
            scanf("%d",&val);
            for( j=0;j<m;j++)
                if(num[j]==val){
                    vis[j]++;
                    break;
                }
            if(j==m){
                num[j]=val;
                vis[m++]++;
            }
    
        }
        return 1;
    }
    void unrepeat(int l){
    
        if(l==n){
            for(int i=0;i<n;i++){
                printf("%d",rcd[i]);
                if(i<n-1)
                    printf(" ");
            }
            printf("
    ");
            return ;
        }
        for(int i=0;i<m;i++)
            if(vis[i]>0){
                vis[i]--;
                rcd[l]=num[i];
                unrepeat(l+1);
                vis[i]++;
            }
    
    }
    int main(){
        while(read_input())
            unrepeat(0);
    
        return 0;
    }
    

      利用STL

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int MAXN = 1000 ;
    int num[MAXN];
    int n;
    int input()
    {
        if(scanf("%d",&n)!=1)
            return 0;
        for(int i=0;i<n;i++)
            scanf("%d",&num[i]);
        return 1;
    
    }
    int main()
    {
        while(input())
        {
           sort(num,num+n);
           do
           {
               for(int i=0;i<n;i++)
                    printf("%d ",num[i]);
                printf("
    ");
           } while(next_permutation(num,num+n));
        }
        return 0;
    }
    

      

    Knowing others is intelligence; Knowing yourself is true wisdom
  • 相关阅读:
    逻辑卷管理LVM (Logical Volume Manager)
    Windows Server 2008 R2 域控修改域用户密码复杂性
    win7 加域开机自动登录域用户
    红帽Linux 配置VNC桌面远程工具
    Redhat linux 挂载命令mount
    SUSE Linux 防火墙设置
    IPv4 地址分类
    常用RAID简介_001
    Element UI
    ie中datepicker赋值不成功
  • 原文地址:https://www.cnblogs.com/huicpc0212/p/4185983.html
Copyright © 2011-2022 走看看