zoukankan      html  css  js  c++  java
  • SSL JudgeOnline 1357——有重复元素的全排列

    Description

    输入n(<=10)个小些字母(可能重复),输出n个字符的全部排列。

    Input

    abaab

    Output

    1:aaabb
    2:aabab
    3:aabba
    4:abaab
    5:ababa
    6:abbaa
    7:baaab
    8:baaba
    9:babaa
    10:bbaaa


    水题!

    这题先读入一个x,将所含的每一个字符在数组a(用来记录每一个字母的出现的个数)的对应位置+1。

    在搜索中,我们可以先判断是不是符合单词的长度,符合就输出(Tip:注意不要忘记输出序列)。

    然后,我们用for i:=’a’ t ‘z’ do 来判断每一种情况,但是这个字符要符合a[i]>0 才可以递归,递归中要将a[i]-1(Tip:不要忘记回溯)。


    代码如下:

    var  x:string;
         a:array['a'..'z']of longint;
         b:array[1..10]of char;
         total:longint;
    
    procedure init;
    var i:longint;
    begin
      readln(x);
      for i:=1 to length(x) do inc(a[x[i]]);
    end;
    
    procedure print;
    var i:longint;
    begin
      inc(total);
      write(total,':');
      for i:=1 to length(x) do write(b[i]);
      writeln;
    end;
    
    procedure main(dep:longint);
    var i:char;
    begin
      if dep>length(x) then
        begin
          print;
          exit;
        end;
      for i:='a' to 'z' do
        if a[i]>0 then
          begin
            dec(a[i]);
            b[dep]:=i;
            main(dep+1);
            inc(a[i]);
          end;
    end;
    
    begin
      init;
      main(1);
    end.
  • 相关阅读:
    heapq of python
    array of python
    Unittest of Python
    事件驱动型工作流 vs 引擎型工作流
    airflow
    WPF 调试触发器
    WPF 使用Popup和TreeView实现树状下拉框
    Oracle : ORA 00933: SQL command not properly ended
    PostgreSQL && PostGIS
    基于ArcGIS开发3D立方体空间关系判断
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412475.html
Copyright © 2011-2022 走看看