zoukankan      html  css  js  c++  java
  • 洛谷 P1691 有重复元素的排列问题 解题报告

    P1691 有重复元素的排列问题

    题目描述

    (R={r_1,r_2,……,r_n})是要进行排列的(n)个元素。其中元素(r_1,r_2,……,r_n)可能相同。使设计一个算法,列出(R)的所有不同排列。

    给定(n)以及待排列的(n)个元素。计算出这(n)个元素的所有不同排列。

    输入输出格式

    输入格式:

    第1行:元素个数(n(1<=n<500))

    第2行:一行字符串,待排列的(n)个元素

    输出格式:

    计算出的(n)个元素的所有不同排列,最后一行是排列总数。


    状态有点迷,硬是想不到怎么搞。。

    贴个码

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int n;
    char c[510];
    int cnt[27],ans=0,a[27];
    
    void dfs(int dep)
    {
        if(n+1==dep)
        {
            //printf("1");
            ans++;
            for(int i=1;i<=n;i++)
                printf("%c",a[i]+97);
            printf("
    ");
            return;
        }
        for(int i=0;i<26;i++)
            if(cnt[i])
            {
                a[dep]=i;
                cnt[i]--;
                dfs(dep+1);
                cnt[i]++;
            }
    }
    int main()
    {
        scanf("%d",&n);
        scanf("%s",c);
        sort(c,c+n);
        for(int i=0;i<n;i++)
            cnt[int(c[i]-'a')]++;
        dfs(1);
        printf("%d
    ",ans);
        return 0;
    }
    
    

    2018.5.5

  • 相关阅读:
    Java
    Linux
    Linux
    Linux
    Java
    Ansible
    Ansible
    Java
    ACM&OI 基础数论算法专题
    题解 P4781 【【模板】拉格朗日插值】
  • 原文地址:https://www.cnblogs.com/butterflydew/p/8999725.html
Copyright © 2011-2022 走看看