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

    有重复元素的排列问题 
    【问题描述】
           设R={ r1, r2 , …, rn}是要进行排列的n个元素。其中元素r1, r2 , …, rn可能相同。试设计一个算法,列出R的所有不同排列。
    【编程任务】
           给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。
    【输入格式】
           由perm.in输入数据。文件的第1 行是元素个数n,1≤n≤500。接下来的1 行是待排列的n个元素。
    【输出格式】
           计算出的n个元素的所有不同排列输出到文件perm.out中。文件最后1行中的数是排列总数。
    【输入样例】
    4
    aacc
    【输出样例】多解
    aacc
    acac
    acca
    caac
    caca
    ccaa
    6
    代码如下:
    /*跟排列组合相似,只需加一个计数器避免重复*/

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int search(int);
    int sum;
    int print();
    bool b[600];
    int n,count[100];
    string s;
    char q[100];
    int main()
    {
    cin>>n>>s;
    for(int i=0;i<n;i++)
    {
    count[s[i]-96]++;//记录出现的次数
    }
    search(0);
    cout<<sum<<endl;
    return 0;
    }
    int print()
    {
    sum++;
    for(int i=0;i<n;i++)
    cout<<q[i];
    cout<<endl;
    }
    int search(int x)
    {
    for(int i=1;i<=26;i++)
    {
    if(count[i])//仍出现
    {
    q[x]=s[i-1];
    count[i]--;
    if(x==n-1)print();
    else
    search(x+1);
    count[i]++;
    }
    }
    }

  • 相关阅读:
    linux redis安装 5.0.2
    Linux nginx安装步骤 centos7
    fastjson JSONObject.toJSONString 出现 $ref: "$."的解决办法(重复引用)
    docker redis安装及配置(外网访问 关闭安全限制 设置密码)
    JDK dump
    mysql8 修改root密码
    docker系列详解<二>之常用命令
    获取地理位置
    js调用摄像头
    点击时扩散效果
  • 原文地址:https://www.cnblogs.com/zzyh/p/6609494.html
Copyright © 2011-2022 走看看