字符序列pascal程序

摘要:
描述从三个元素[A,B,C]的集合中选择元素,以生成N个字符的序列,这样相邻的两个单词就不会有相同的子序列。例如,当N=5时,ABCBA合格,而序列ABCBC和ABABC不合格,因为它们的中子序列BC和AB相同。输入对于键盘输入的NOutput,计算满足条件的N个字符的所有序列及其总数?

Description

从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列相同。例:N = 5时ABCBA是合格的,而序列ABCBC与ABABC是不合格的,因为其中子序列BC,AB是相同的。

Input

对于由键盘输入的N(1<=n<=10)

Output

求出满足条件的N个字符的所有序列和其总数?

Sample Input

3

Sample Output

ABA
ABC
ACA
ACB
BAB
BAC
BCA
BCB
CAB
CAC
CBA
CBC
12



这题我是用搜索的方法来做的

在搜的时候,如果这个字母填下去不会有两个相邻的子序列的话,就记录下来,填完了就输出并统计。



var
a:array[0..100]of longint;
n,tj,i,j,k,s,bz:longint;

function check(x,l:longint):longint;
var
i,j:longint;
begin
    a[l]:=x;
    check:=1;
    for i:=1 to l div 2 do
    begin
        for j:=1 to i do
        if a[l-j+1]<>a[l-i-j+1] then inc(bz);
        if bz=0 then check:=0;
        bz:=0;
    end;
    a[l]:=0;
end;
procedure print;
var
i:longint;
begin
    inc(tj);
    for i:=1 to n do
    if a[i]=1 then write('A') else if a[i]=2 then write('B') else write('C');
    writeln;
end;
procedure search(dep:longint);
var
i,j:longint;
begin
    if dep>n then
    begin
        print;
        exit;
    end;
    for i:=1 to 3 do
    if check(i,dep)=1 then
    begin
        a[dep]:=i;
        search(dep+1);
        a[dep]:=0;
    end;
end;
begin
    read(n);tj:=0;
    fillchar(a,sizeof(a),0);
    search(1);
    write(tj);
end.


免责声明:文章转载自《字符序列pascal程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Arch Linux 分区设定以及新增用户等命令用cmake构建gtk程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Delphi初浅入门笔记之一 :ObjectPascal基础

因为公司的需要,花了三天学习了一些Delphi的基本知识。但是由于个人原因,快要离职了。怕以后会忘记,将那三天的学习成果记录下来。 Delphi语法基础: Delphi是一种完全面向对象的开发平台(始终不理解什么叫面向对象的开发平台和面向对象的关系),它以面向对象的程序设计语言Object Pascal作为其程序设计语言。 Pascal语言是一种结构化的程...

使用RemObjects Pascal Script (转)

http://www.cnblogs.com/MaxWoods/p/3304954.html 摘自RemObjects Wiki 本文提供RemObjects Pascal Script的整体概要并演示如何创建一些简单的脚本. Pascal Script包括两个不同部分: 编译器 (uPSCompiler.pas) 运行时 (uPSRuntime.pas...

delphi 脚本引擎比较

TMS Scripter:支持Pascal和VBScript两种语法。优点是文档齐全、例子齐全,脚本可直接支持DLL,官方还提供了丰富的IDE Debug工具、单元导出函数工具等,缺点是编译运行较慢。for 空循环1000万次,需要10秒钟以上。TMS Scripter是商业共享软件。 FastScript:用过FastReport报表的同学都知道Fast...

Delphi指针的用法

DELPHI指针的使用 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今的Object Pascal,可以说在指针运用...

Free Pascal IDE 下载、安装、配置

1.下载地址: 浏览器中输入地址 http://www.freepascal.org/download.var 进入下载选择页, 选择合适的版本安装,Windows 系统下可以根据自己系统的版本选择Windows 32-bit 或Windows 64-bit版本下载安装! 成功下载 FreePascal3.0 Windows 32 位版本的安装文件名为fp...

C#开发规范总结(个人建议)

.NET开发编程规范 第1章程序的版式 版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。 可以把程序的版式比喻为"书法"。好的"书法"可让人对程序一目了然,看得兴致勃勃。差的程序"书法"如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。 1.1 版本和版权声明 版本和版权的声明写在文件的开头,包含内容如下:...