給你一段按鍵的文字,其中』[『表示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 ...