紫書題目 悲劇文字

2022-03-03 06:21:24 字數 783 閱讀 2864

題目的含義就是你有乙個壞的鍵盤,你不知道什麼時候這個鍵盤的home鍵和end鍵會自動的按下,然後會讓你打出的文字變得十分的凌亂,那麼現在輸入一段文字,問你這段文字輸出實際上是什麼。其中  '[' 表示的是home鍵, ']' 表示的是end鍵,輸入的資料不糊超過100000的個字母,問輸入出來的資料是什麼樣子的。

這一題的分析書中提到的是通過鍊錶來進行不斷地插入操作,能夠使用鍊錶的話就一定能過使用陣列來表示的,但是要明白的就是兩者的區別,其中陣列不適合數量大的插入操作,但是鍊錶不會有這樣的問題,所以這裡使用的鍊錶,但是,使用的是用陣列來模擬鍊錶,先將這些資料都儲存到乙個陣列裡面去這樣通過改變輸出的順序就可以達到效果,一旦遇到左方括號就將之後的資料移到這些資料的最前面,遇到右括號就把資料移到字串的最後面。如果是普通的字母則不改變他們的輸出的順序,這裡是通過儲存每乙個字母的輸出順序來達到目的,這裡的解決方法中含有乙個next陣列,這個陣列就是來表示這個這個字串的輸出順序的,每次如果遇到了左方括號,那麼這個符號後面的所有的字母的輸出順序就會提前到這個字串的最前面的位置上,這樣的就達到了目的。

下面就是源**

#include

#include

const int maxn=100000+5;

int last,cur,next[maxn];

char s[maxn];

int main()

}for(int i=next[0];i!=0;i=next[i])

printf("%c",s[i]);

printf("\n");

}return 0;

}

紫書題目 樹葉的下落

這一題的題意就是說明有很多的樹葉會向下飄動,問最後每一條水平線上的權值是多少。這裡的水平是指,每個左孩子是在根結點的左邊乙個位置上,右孩子實在根節點的右邊乙個位置上。題目按照先序輸入的方式進行。問你每次輸入的資料最後按照從左到右的方式輸出的資料是多少。這一題的最難的部分應該就是如何解決每乙個節點是在...

悲劇的文字

題目描述 你有乙個破損的鍵盤。鍵盤上所有的鍵都能正常工作,但有時home鍵或者end鍵會自動按下 注意 按下home鍵游標會跳到一行的開頭,按下end鍵,游標會跳到一行的結尾。你並不知道鍵盤存在這一問題,而是專心地打稿子,甚至連螢幕都沒有開啟。當你開啟顯示器之後,展現在你面前的是一段悲劇的文字。你的...

Broken Keyboard(悲劇文字)

你有乙個鍵盤,鍵盤上所有的鍵都能正常使用,只是home鍵和end鍵有時會自動按下。你並不知道這一情況,而是專心地打稿子,甚至連顯示器都沒開電源。當你開啟顯示器之後,展現在你面前的是一段悲劇文字。你的任務是根據給出的鍵盤上實際輸入的內容,計算並輸出這段悲劇文字 即顯示器上展現的文字 input 一行文...