zoukankan      html  css  js  c++  java
  • 含有重复元素的排列

    Description

    设R={ r1, r2, ……, rn }是要进行排列的n个元素。其中元素r1 ,r2 ,……,rn可能相同。试设计一个算法,列出R的所有不同排列。给定n以及待排列的n个元素。计算出这n个元素的所有不同排列。

    Input

    输入数据的的第1行是元素个数n,1≤n≤500。接下来的1行是待排列的n个元素。

    Output

    将计算出的n个元素的所有不同排列输出,每种排列占1行,最后1行中的数是排列总数。

    Sample Input

    4 aacc

    Sample Output

    aacc 
    acac 
    acca 
    caac 
    caca 
    ccaa 
    6

    分析:和普通求全排列问题差不多,只是多了,判断是否重复字符而已。

    关于无重复元素的排列,可以参考:http://www.cnblogs.com/huashanqingzhu/p/3569835.html

     1  #include <iostream>
     2  #include <algorithm>
     3  #include <cstdio>
     4  using namespace std ;
     5  long long ans;
     6  int ok(char str[],int a ,int b )
     7  {
     8           if(b>a)
     9            for(int i=a;i<b;i++)
    10               if(str[i]==str[b])
    11                   return 0;
    12            return 1;
    13  }
    14  void perm(char str[],int k,int m)
    15  {
    16            int i;
    17            if(k==m)
    18            {
    19               ans++;
    20               for(i=0;i<=m;i++)
    21                   printf("%c",str[i]);
    22               printf("
    ");
    23               return ;
    24            }
    25            else for(i=k;i<=m;i++)
    26                    if(ok(str,k,i))
    27                    {
    28                            swap(str[k],str[i]);
    29                            perm(str,k+1,m);
    30                            swap(str[k],str[i]);
    31                    }
    32    
    33  }
    34  int main()
    35  {
    36       char str[505];
    37       int n,i;
    38       scanf("%d",&n);
    39       getchar();
    40       ans=0;
    41       for(i=0;i<n;i++)
    42           scanf("%c",&str[i]);
    43       perm(str,0,n-1) ;
    44       printf("%lld
    ",ans);
    45       return 0;
    46  }

    本文代码来自:http://blog.sina.com.cn/s/blog_9b95c19e0101aqwn.html

  • 相关阅读:
    .Net Core实现下载多个文件并压缩打包
    VS上使用Docker调试编译net core项目时卡在 vsdbgvs2017u5 exits,deleting.
    spring boot actuator监控详细介绍
    数仓知识
    layui使用 弹窗 layer
    Spring配置数据源(连接池)
    Spring配置文件-引入其他配置文件(分模块开发import)&Spring相关API
    Spring配置文件-Bean标签配置
    事务的四大特征&事务隔离级别
    事务
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/4534159.html
Copyright © 2011-2022 走看看