字串行pascal程式

2021-07-25 13:47:06 字數 1554 閱讀 5101

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

abcaca

acbbab

bacbca

bcbcab

caccba

cbc12

這題我是用搜尋的方法來做的

在搜的時候,如果這個字母填下去不會有兩個相鄰的子串行的話,就記錄下來,填完了就輸出並統計。

var

a:array[0..100]of longint;

n,tj,i,j,k,s,bz:longint;

function check(x,l:longint):longint;

vari,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;

vari: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);

vari,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陣列,字串

已經兩天沒和大家見面了,今天我們來學習pascal語言和演算法三大風水寶地之一的陣列 三大風水寶地有 1.迴圈 2.陣列,字串 3.遞迴 我們來看看一維陣列的原理 陣列的定義是 a 隨意改 array 1.10000 隨意改 of longint 隨意改 一維陣列就是把數存入a 1 a 2 a 3 ...

pascal 的字串操作

1.ord 將字元轉為 ascii碼 2.chr 將ascii碼轉為字元 3.trunc 求整數部分 4.random randomize 5.copy s,i,l 從s串中擷取第i個字元開始後長度為l的串 6.delete s,i,l 從s串中刪除第i個字元開始後長度為l的串 7.insert s...

Pascal 語言中字元與字串

題目 輸入一段文章 255個字元以內 求文章中單詞的個數,相同單詞只記一次,the 和 the 視作相同。敲 vararticle,w string arr array 1.255 of string i,len,ans longint function check w string boolean...