生成序列

原创 2015年07月10日 15:48:39

[题目描述]
在计算机科学领域,如何高效生成指定的序列是一个非常重要的问题。现在给你一个字符串,且这个字符串内部的字符已经升序有序。请你找出由这些字符构成的所有的序列。
[输入]
输入的第一行是一个整数n,表示测试数据组数。
接下来n行,每行输入一个字符升序有序的字符串。字符串中只包含小写字母,长度不超过8。
[输出]
对于每组输入,输出由输入的字符串中的字符构成的所有序列,按字典序升序排列,结果中不能出现相同的序列。
每组输出后面跟一个空行。
[样例输入]
3
ab
abc
bca
[样例输出]
ab
ba
[ ]
abc
acb
bac
bca
cab
cba
[ ]
abc
acb
bac
bca
cab
cba
[ ]
[思路分析]
这是排列组合的题目,完全可以用DFS把答案搜出来,较为简单。
[参考程序]

var a,b:array[1..5000]of char;
    v:array[1..5000]of boolean;
    i,j,k,l,m,n,t,num,tail:longint;
procedure qs;
var i,j:longint;
    q:char;
begin
  for i:=1 to n-1 do
   begin
     for j:=i+1 to n do
       begin
         if a[i]>a[j] then
          begin
            q:=a[i];
            a[i]:=a[j];
            a[j]:=q;
          end;
       end;
  end;
end;
procedure print;
var i,j,k:longint;
begin
  for i:=1 to n do
    write(b[i]);
    writeln;
end;
procedure dfs(k:longint);
var i,j,l:longint;
begin
  if  v[k] then
    begin
      v[k]:=false;
      num:=num+1;
      b[num]:=a[k];
      if num=n then
        print;
      if num<>n then
        for i:=1 to n do
          dfs(i);
      v[k]:=true;
      num:=num-1;
    end;
end;
begin
  readln(t);
  for l:=1 to t do
   begin
     n:=0;
     if l<>1 then
       readln;
     while not eoln do
       begin
         inc(n);
         read(a[n]);
       end;
     qs;
     //dec(n);
     num:=0;
     tail:=0;
     fillchar(v,sizeof(v),true);
     for k:=1 to n do
       dfs(k);
     writeln;
   end;
end.

相关文章推荐

一种通用的生成序列的方法

  • 2013年03月11日 10:19
  • 156KB
  • 下载

序列帧生成软件 幻影离子

  • 2012年11月14日 12:45
  • 810KB
  • 下载

游戏表格数据序列化自动生成工具

大家都知道,数据的持久化保存一般是以二进制形式保存。常用的数据序列化协议有 google的protobuf ,json,Serializab。现在很多游戏开发都是用的是google的protobuf ...

MyEclipseKeyGen序列号生成工具

  • 2012年12月25日 00:06
  • 10KB
  • 下载

De Bruijn序列的生成及其应用

上次美团的面试题:
  • yibcs
  • yibcs
  • 2014年11月18日 12:49
  • 1859

借用Redis生成主键实现所有类新增不再需要手动配置主键,序列什么的通通GG

光想想都有点小兴奋呢,至少节约了几个人天吧,而且避免了出错,一旦需要修改了非常方便 所有service继承该baseservice,几乎不再需要考虑主键的事情了,单笔插入多笔插入通通帮你搞定,so e...

Myeclipse序列号生成

  • 2011年08月26日 00:09
  • 172KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成序列
举报原因:
原因补充:

(最多只允许输入30个字)