description
從三個元素的集合[a,b,c]中選取元素生成乙個n個字元組成的序列,使得沒有兩個相鄰字的子串行相同。例:n = 5時abcba是合格的,而序列abcbc與ababc是不合格的,因為其中子串行bc,ab是相同的。
input
對於由鍵盤輸入的n(1<=n<=10)
output
求出滿足條件的n個字元的所有序列和其總數?
sample input
3
sample output
abaabcaca
acbbab
bacbca
bcbcab
caccba
cbc12
這題我是用搜尋的方法來做的
在搜的時候,如果這個字母填下去不會有兩個相鄰的子串行的話,就記錄下來,填完了就輸出並統計。
vara: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...