生成序列

原创 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.

LTE-TDD随机接入过程(5)-怎么生成64个前导码序列

参考文献 (1)3GPP TS 36.211 V9.1.0 (2010-03) Physical Channels and Modulation (2)3GPP TS 36.331 V9.18.0 (...
  • m_052148
  • m_052148
  • 2016年04月17日 19:02
  • 12405

1 生成基本序列

数字信号处理的对象,是对模拟信号采样、量化后形成的数字信号,在一般的书中,列举的信号包括,单位冲击序列、单位阶跃序列、矩形序列、正弦序列、指(复)数序列。下面演示如何通过matlab生成这些序列。 ...
  • thefutureisour
  • thefutureisour
  • 2014年01月29日 15:15
  • 1997

Python的6种内建序列之通用操作

Python 内建序列 通用操作
  • RHEL_admin
  • RHEL_admin
  • 2014年12月17日 14:47
  • 3485

使用数据库序列生成主键

一,什么是序列     序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要 的用途是生成表的主键值,可以在插入语句中引用,也可以通...
  • reggergdsg
  • reggergdsg
  • 2017年02月19日 17:29
  • 2869

C++产生随机序列算法

C++
  • u013347704
  • u013347704
  • 2014年02月15日 08:18
  • 1917

[Matlab] M序列的生成,自相关和谱密度

之前不懂系统辨识的理论,输入信号随便用了一个阶跃信号,后来发现阶跃信号其实很菜,不足以激励起系统的全部动态特性,额,实验数据立马弱爆了。。。M序列是工程中常用的输入信号,它的性质类似于白噪声,而白噪声...
  • u014595019
  • u014595019
  • 2015年04月13日 15:48
  • 2930

非重复随机序列生成算法-交换法

【算法3】 “思路2”的基本思想是:利用随机数的生成特点,将已经生成的数值,排除在随机区间之外,这样就可以确保下次生成的随机数一定是新的。具体来说,我们可以这样做: 首先,建立一个长度为N的数组a...
  • xmlife
  • xmlife
  • 2016年05月13日 17:13
  • 733

oracle的序列使用,创建、表中调用、主键自动生成

Oracle的序列原理是先根据需求建立个序列,然后在表insert数据时应用某个序列,因此序列是公用的。也就是说如果一个表用了一个序列,起始1递增1,如果已经递增使用到100,用另一个表也引用这个序列...
  • sunqian_90
  • sunqian_90
  • 2014年05月19日 09:54
  • 2287

MySQL 序列生成函数

由于效率上的需求,我们需要批量入库。 我们有个业务表,分成了主表tab和详情表tab_detail。以前的做法需要一条一条插入,主键自增序列自动生成,并且每次插入后再利用last_insert_id这...
  • gua___gua
  • gua___gua
  • 2015年08月10日 14:33
  • 1220

Python——序列

一、概览         在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的位置,也称为索引。第一个索引是 0,第二个则是 1,以此类推。序列中...
  • bolike
  • bolike
  • 2014年02月26日 21:11
  • 21888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成序列
举报原因:
原因补充:

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