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

  • 相关阅读:
    SPOJ SAMER08A
    SPOJ TRAFFICN
    CS Academy Set Subtraction
    CS Academy Bad Triplet
    CF Round 432 C. Five Dimensional Points
    CF Round 432 B. Arpa and an exam about geometry
    SPOJ INVCNT
    CS Academy Palindromic Tree
    身体训练
    简单瞎搞题
  • 原文地址:https://www.cnblogs.com/butterflydew/p/8999725.html
Copyright © 2011-2022 走看看