天天看點

【算法】求字母表∑的所有情況

字母表 ∑ 為  {a , b}

1.設計函數,用以計算建立在 ∑上長度小于n 的字元串的個數,并給出n=5時的字元串個數。

2.在上述功能的基礎上,增加列出所有符合條件的字元串功能。

輸入輸出樣例:

輸入:

1

輸出:

a

b

2

aa

ab

ba

bb

3

aaa

aab

aba

abb

baa

bab

bba

bbb

ac代碼:

例如輸入3:

結果:

分析過程:

先是aaa,無b,不執行while,

遇到if,最後一個+1變成b,

回到頂端輸出aab。

之後b被while隔過去

剩aa,遇到if,最後一個+1變成b,此時為ab。

回到頂端發現不夠3,加一個a(此時為aba),

continue回到頂端,輸出aba。

回到頂端輸出abb。

之後bb被while隔過去

剩a,遇到if,最後一個+1變成b,此時為b。

回到頂端發現不夠3,加兩個a(此時為baa),

continue回到頂端,輸出baa。

回到頂端輸出bab。

剩ba,遇到if,最後一個+1變成b,此時為bb。

回到頂端發現不夠3,加一個a(此時為bba),

continue回到頂端,輸出bba。

回到頂端輸出bbb。

之後bbb被while隔過去,

剩空串,break出去,算法結束。

即是:一開始是空串,然後遵循一下變化:

1.不夠3位,補a。

2.後面有幾位b,全去掉,若變成空串退出算法。

3.如果末尾是a,變成b,夠3位輸出。

二叉樹周遊字母表∑的模型:

【算法】求字母表∑的所有情況

以上算法并不一定是最優的,還有其他方法,就不在一一叙述,有興趣的可以自己去研究。

轉載請注明出處:http://blog.csdn.net/acmman