hiho一下 第十周 分治

2021-09-23 13:29:12 字數 1499 閱讀 7279

時間限制:10000ms

單點時限:1000ms

記憶體限制:256mb

描述在參與過了美食節之後,小hi和小ho在別的地方又玩耍了一陣子,在這個過程中,小ho得到了乙個非常有意思的玩具——一棵由小球和木棍連線起來的二叉樹!

小ho對這棵二叉樹愛不釋手,於是給它的每乙個節點都標記了乙個標號——乙個屬於a..z的大寫字母,並且沒有任意兩個節點的標號是一樣的。小hi也瞅準了這個機會,重新鞏固了一下小ho關於二叉樹遍歷的基礎知識~就這樣,日子安穩的過了兩天。

這天,小ho正好在求解這棵二叉樹的前序、中序和後序遍歷的結果,但是卻在求出前序遍歷和中序遍歷之後不小心把二叉樹摔到了地上,小球和木棍等零件散落了一地!

小ho損失了心愛的玩具,正要嚎啕大哭起來,所幸被小hi發現了,勸說道:「別著急,這不是零件都還在麼?拼起來不就是了?」

「可是我忘記了二叉樹長什麼樣子了!」小ho沮喪道。

「這個簡單,你不是剛剛求出了這棵二叉樹的前序和中序遍歷的結果麼,利用這兩個資訊就可以還原出整棵二叉樹來哦!」

「這樣麼?!!」小ho止住了淚水,問道:「那要怎麼做呢?」

沒錯!小ho在這一周遇到的問題便是:給出一棵二叉樹的前序和中序遍歷的結果,還原這棵二叉樹並輸出其後序遍歷的結果。

輸入每個測試點(輸入檔案)有且僅有一組測試資料。

每組測試資料的第一行為乙個由大寫英文本母組成的字串,表示該二叉樹的前序遍歷的結果。

每組測試資料的第二行為乙個由大寫英文本母組成的字串,表示該二叉樹的中序遍歷的結果。

對於100%的資料,滿足二叉樹的節點數小於等於26。

輸出對於每組測試資料,輸出乙個由大寫英文本母組成的字串,表示還原出的二叉樹的後序遍歷的結果。

樣例輸入

ab

ba

樣例輸出

ba
比賽已經結束,去題庫提交。

根據定義分解原為題為兩個子問題求解即可。

前序:根左右

中序:左根右

後續:左右根

根據前序確定根節點的位置,然後根據中序去頂左子樹大小。分別找到左右子樹根的位置,遞迴求解。

#include#include#includeusing namespace std;

#define ll long long

#define sca(x) scanf("%d",&x)

int sz;

char s[30],s1[30];

void pri(int l,int r,int root)

int j=l;

int cnt=0;

while(s1[j]!=s[root]&&j<=r)j++,cnt++;

pri(l,j-1,root+1);

pri(j+1,r,root+cnt+1);

printf("%c",s1[j]);

}int main()

/*abdeghcfij

dbgehacijf

*/

hiho一下 第六十周

給定只包含字母的兩個字串a,b,求a,b兩個字串的最長公共子串行,要求構成子串行的子串長度都必須大於等於3。比如 abcdefghijklmn 和 ababceghjklmn 其最長滿足題意要求的子串行為 abcjklmn 其由公共子串 abc 和 jklmn 組成。這裡我們要注意子串和子串行的區別...

hiho一下 第二週

題目名稱 trie樹 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一本詞典,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能對於每乙個我給出的字串,都在這個詞典裡面找到以這個字串開頭的所...

hiho一下第143周

題目1 hiho密碼 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述 小ho根據最近在密碼學課上學習到的知識,開發出了一款hiho密碼,這款密碼的秘鑰是這樣生成的 對於一種有n個字母的語言,選擇乙個長度為m的單詞 將組成這個單詞的所有字母按照順序不重複的寫出 即遇到相...