破損的鍵盤(uva 11988)

2021-07-08 10:43:01 字數 926 閱讀 4646

給你一段按鍵的文字,其中』[『表示home鍵,』]』表示end鍵,輸出這段悲劇的文字。

思路:使用鍊錶來模擬,遇到home鍵,就將後邊的文字插入到這段文字的最前邊,遇到

end鍵,就插入到這段文字的最後邊。但是用鍊錶會用到指標,過程比較繁瑣。這裡用乙個

next陣列模擬指向,next[i]表示當前顯示屏中s[i]右邊的字元下標。再用乙個cur表示當前

游標的位置,last表示最後乙個字元的記錄位置,這樣遇到end鍵,就能直接找到游標下一

個指向的字元位置了。

具體參考:演算法競賽入門經典(第二版)p143~144

#include

#include

#include

using namespace std;

const int maxn = 10000 + 5;

intlast, cur, next[maxn];

char s[maxn];

int main()

else

if(ch == ']')

else

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

printf("\n");

}return

0;}

#include

#include

#include

#include

using

namespace

std;

char buf[10000];

void dfs(int l, int r)

if(buf[s] == '[') dfs(l, s-1);

}int main()

return

0;

}

UVA 11988 破損的鍵盤

題目大意 從鍵盤輸入一行字串,但是由於鍵盤上的home 首 鍵和end 尾 鍵壞了,有時會自動按下這兩個鍵,所以打出的字串是混亂的。輸入 共包含多組資料,每組資料佔一行,輸入的每行字串,是從鍵盤按下去的每乙個鍵,其中 代表home鍵,代表end鍵 例 this is a beiju text 注 輸...

UVA11988破損的鍵盤(悲劇文字)

1.虛擬結點,從s 1開始輸入,字串長度也從s 1開始計算 2.next i next cur 大致是把下乙個字元的位置設為0 next cur i是將cur與i連線起來,相當於在cur後插入i,即cur i 3.遇到 時,令cur 0,即在0後插入元素 遇到 時,令cur last,即在最後乙個元...

UVa 11988 破損的鍵盤(鍊錶)

題意就是輸入文字,若是遇到 游標就移到最前面,遇到 游標就移到最後。在這段 中,在for迴圈中如果不用n來代替strlen s 1 最後就會超時,以後寫 的時候我會注意到這點。1 include2 include3 include4 using namespace std 56 const int ...