1. 程式人生 > >UVa 11988破損的鍵盤

UVa 11988破損的鍵盤

這題是很好的學習用陣列實現連結串列的例子.
原題連結 UVa11988
題意
輸入一段文字,字元’[‘表示Home鍵,’]’表示End鍵。輸出螢幕上面的結果。
思路
難點在於在字串的頭和尾插入字元,如果直接利用陣列操作,會超時,最好的辦法就是利用單向連結串列。
劉汝佳大哥的程式碼

#include<cstdio>
#include<cstring>
const int maxn=100000+5;
char str[maxn];
int next[maxn];
int cur,last;
int main(void)
{
    while(scanf("%s
"
,str+1)!=EOF) { int n=strlen(str+1); cur=last=0;// next[0]=0; for(int i=1;i<=n;i++) { if(str[i]=='[') cur=0; else if(str[i]==']') cur=last; else { next[i]=next[cur];//記錄之前座標 next
[cur]=i;//記錄當前字元的下標 if(cur==last) last=i; cur=i; } } for(int i=next[0];i!=0;i=next[i]) { printf("%c",str[i]); } printf("\n"); } return 0; }

如有不當之處歡迎指出!!

相關推薦

UVa 11988破損鍵盤

這題是很好的學習用陣列實現連結串列的例子. 原題連結 UVa11988 題意 輸入一段文字,字元’[‘表示Home鍵,’]’表示End鍵。輸出螢幕上面的結果。 思路 難點在於在字串的頭和尾插

UVa 11988 破損鍵盤 連結串列 雙向佇列

連結串列解決 用陣列頻繁的移動元素效率較低,用連結串列 較好。 #include<iostream> #include<cstdio> #include<cstring

例題6-4 破損鍵盤(又名:悲劇文本)(Broken Keyboard,UVa 11988)—靜態鏈表

else if strlen 靜態鏈表 尾插 指向 第一個元素 內容 其中 分享 問題描述: 你有一個破損的鍵盤。鍵盤上所有的鍵都可以正常工作,但有時候Home鍵或者End鍵會自動按下。你並不知道鍵盤存在這一問題,而是專心打稿子,甚至連顯示器都沒打開。當你打開

鏈表-破損鍵盤 Uva 11988

str pan 數組模擬鏈表 光標 while i++ 鏈表 字符 clas #include<cstdio> #include<cstring> const int maxn=100000+5; int last,cur,next[maxn];

例題6-4 破損鍵盤 UVa 11988

題意:字元'['表示句首,就是游標移到了句首,’】‘表示句尾 法一:用連結串列模擬游標移動 #include <algorithm> #include <iostream> #include <cstdlib> #include <

連結串列-單向連結串列&&UVa 11988 Broken Keyboard(a.k.a.Beijiu Text)(破損鍵盤(悲劇文字))的理解與解析

連結串列-單向連結串列&&UVa 11988 Broken Keyboard(a.k.a.Beijiu Text)(破損的鍵盤(悲劇文字)) C++最新的2011標準C++1

靜態連結串列——UVA11988(破損鍵盤)

開始刷資料結構相關的題了,在筆試和麵試過程中如果要寫出指標形式的連結串列時間上可能不夠。該題很好地訓練了怎麼使用陣列來模擬連結串列 破損的鍵盤(又名:悲劇文字)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988) 你有一個破損的鍵

UVA 11988 Broken Keyboard (a.k.a. Beiju Text) 悲劇文字 連結串列

You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem with the keyboard is that sometimes the

紫書例題6-4 UVa 11988 ( 連結串列

用陣列模擬連結串列 ,以前只用過指標模擬,陣列方便了不少啊 沒什麼好說的(不是很理解啊 先記錄一下唉2 /*一直不知道我HOME與end作用 所以一直沒有理解題意QAQ */ /* 題意就是隻要出

單鏈表--uva 11988 Broken Keyboard 從入門到放棄

分析: /* 思路: 用s陣列儲存字串; 用游標指定元素位置,下一個元素插入時在游標位置後面; 用next陣列記錄指向的下一個元素,在陣列上構建連結串列關係; 將游標在字串中移動,模擬輸出結果構建連

UVA-11988: Broken Keyboard (a.k.a. Beiju Text)(我的第一個連結串列)

#include<stdio.h> #include<iostream> #include<string> #include<stack> #include<string.h> using namespace st

UVA 11988 Broken Keyboard (Beiju Text)

題目: 首先,括號對前面的字串的輸出是無法分割的。 也就是說,括號右邊的字元只能輸出到前面這個字串的2邊。 這個和算術表示式裡面的小括號是很像的,小括號是封閉的,括號外面的內容無法影響裡面的內容。

Broken Keyboard(a.k.a.Beiju Text),UVa 11988

#include<iostream> #include<stack> #include<string> using namespace std; int last,cur; char s[100005]; int main(){ i

UVA11988(破損鍵盤) 使用陣列模擬連結串列插入

  開始刷資料結構相關的題了,在筆試和麵試過程中如果要寫出指標形式的連結串列時間上可能不夠。該題很好地訓練了怎麼使用陣列來模擬連結串列   破損的鍵盤(又名:悲劇文字)(Broken Keyboard(a.k.a. Beiju Text), UVa 1198

UVa 11988 Broken Keyboard (a.k.a. Beiju Text) (連結串列)

      Broken Keyboard (a.k.a. Beiju Text)You're typing a long text with a broken keyboard. Well it's

UVa 11998 破碎的鍵盤(數組實現鏈表)

logs col 包含 != mes max nbsp esp spa 題意: 輸入一行字符,其中包含‘[‘ 和 ‘]’, 意思為鍵盤上的home 和 end 鍵, 然後模擬字符在鍵盤上輸入。 輸入一行最終的結果 分析: 用數組模擬一個鏈表, 在鏈表的頭尾插入字母然後輸出即

《演算法競賽入門經典》一破損鍵盤(又名:悲劇文字)(Broken Keyboard)

問題描述:        你有一個破損的鍵盤。鍵盤上所有的鍵都可以正常工作,但有時候Home鍵或者End鍵會自動按下。你並不知道鍵盤存在這一問題,而是專心打稿子,甚至連顯示器都沒開啟。當你開啟顯示器後,展現在你面前的是一段悲劇文字。你的任務是在開啟

【codevs 4650】破損鍵盤

4650 破損的鍵盤 時間限制: 1 s 空間限制: 16000 KB 題目等級 : 黃金 Gold 題解 題目描述 Description 有一天,你需要打一份檔案,但是你的鍵盤壞了,上面的”home”鍵和”end”鍵會時不時地按下,而你卻

【codevs 4716】破損鍵盤2

4716 破損的鍵盤2 時間限制: 1 s 空間限制: 16000 KB 題目等級 : 白銀 Silver 題解 檢視執行結果 題目描述 Description 這個鍵盤壞掉了。字母的順序被弄亂了。 你毫不知情,當你列印文件的時候,你甚

破損鍵盤》連結串列

題目 你有一個破損的鍵盤。鍵盤上的所有鍵都可以正常工作,但有時Home鍵或者End鍵會自動按下。你並不知道鍵盤存在這一問題,而是專心地打稿子,甚至連顯示器都沒開啟。當你開啟顯示器之後,展現在你面前的是一段悲劇的文字。你的任務是在開啟顯示器之前計算出這段悲劇文字。對於每組資料