例題6-4 破損的鍵盤 UVa 11988
題意:字元'['表示句首,就是游標移到了句首,’】‘表示句尾
法一:用連結串列模擬游標移動
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; const int maxn=100005; int last,cur,next[maxn]; char s[maxn]; int main() { //freopen("f.txt","r",stdin); while(scanf("%s",s+1)==1){ int n=strlen(s+1); last=cur=0; next[0]=0; for(int i=1;i<=n;i++){ char ch=s[i]; if(ch=='[')cur=0; else if(ch==']')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",s[i]); } printf("\n"); } return 0; }
法二:這題看到有人用雙端佇列,把[加入隊首,】加入隊尾,再按照佇列中的順序輸出
#include <iostream> #include <string> #include <vector> #include <cstdio> #include <deque> using namespace std; char str[100010]; int main(){ // freopen("f.txt","r",stdin); while(scanf("%s",str)!=EOF){ deque<int > q; int i=0; while(str[i]=='['||str[i]==']') i++; q.push_front(i); while(str[i]){ if(str[i]=='['){ q.push_front(i+1); str[i]='\0'; } else if(str[i]==']'){ q.push_back(i+1); str[i]='\0'; } i++; } while(!q.empty()){ printf("%s",str+q.front()); q.pop_front(); } printf("\n"); } return 0; }
法三:
分析:給出的一行文字,從後往前看,如果遇到】,那麼】後面的字串一定在最後,後面的字串一定在最前,再往前移動還是這樣的規律,所以這題可以用遞迴解決;
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; char buf[100001]; void dfs(int l, int r) { int s = r; while (s >= l && buf[s] != '[' && buf[s] != ']') s --; if (buf[s] == ']') dfs(l, s-1); for (int i = s+1 ; i <= r ; ++ i) printf("%c",buf[i]); if (buf[s] == '[') dfs(l, s-1); } int main() { // freopen("f.txt","r",stdin); while (gets(buf)) { dfs(0, strlen(buf)-1); printf("\n"); } return 0; }
相關推薦
例題6-4 破損的鍵盤(又名:悲劇文本)(Broken Keyboard,UVa 11988)—靜態鏈表
else if strlen 靜態鏈表 尾插 指向 第一個元素 內容 其中 分享 問題描述: 你有一個破損的鍵盤。鍵盤上所有的鍵都可以正常工作,但有時候Home鍵或者End鍵會自動按下。你並不知道鍵盤存在這一問題,而是專心打稿子,甚至連顯示器都沒打開。當你打開
例題6-4 破損的鍵盤 UVa 11988
題意:字元'['表示句首,就是游標移到了句首,’】‘表示句尾 法一:用連結串列模擬游標移動 #include <algorithm> #include <iostream> #include <cstdlib> #include <
紫書例題6-4 UVa 11988 ( 連結串列
用陣列模擬連結串列 ,以前只用過指標模擬,陣列方便了不少啊 沒什麼好說的(不是很理解啊 先記錄一下唉2 /*一直不知道我HOME與end作用 所以一直沒有理解題意QAQ */ /* 題意就是隻要出
鏈表-破損的鍵盤 Uva 11988
str pan 數組模擬鏈表 光標 while i++ 鏈表 字符 clas #include<cstdio> #include<cstring> const int maxn=100000+5; int last,cur,next[maxn];
例題6-2(Rails, UVa 514)
using view 存儲 st表 get problem body closed 分享 題目鏈接 給定入棧順序,問能否以給出的順序出棧。 眾所周知,棧的特點是先入後出。 此特點在該題中體現為對於當前需要出棧的元素(要想先出),必須
演算法競賽入門經典第六章例題6-1 Concurrency Simulator UVA
#include<iostream> #include<string> #include<deque> #include<vector> #inclu
【演算法競賽入門經典】例題6-4 uva11988
題目連結 題意 你在用鍵盤打字,但是“home”和“end”鍵會是不是自動按下,“home”會使游標移動到文字開頭,“end”會使游標移動到文字最後。你打字時沒開顯示器,當你開啟顯示器後,呈現在你眼前的是一段悲劇的文字。 輸入包含多組資料,每組資料
UVa 11988破損的鍵盤
這題是很好的學習用陣列實現連結串列的例子. 原題連結 UVa11988 題意 輸入一段文字,字元’[‘表示Home鍵,’]’表示End鍵。輸出螢幕上面的結果。 思路 難點在於在字串的頭和尾插
UVa 11988 破損的鍵盤 連結串列 雙向佇列
連結串列解決 用陣列頻繁的移動元素效率較低,用連結串列 較好。 #include<iostream> #include<cstdio> #include<cstring
連結串列-單向連結串列&&UVa 11988 Broken Keyboard(a.k.a.Beijiu Text)(破損的鍵盤(悲劇文字))的理解與解析
連結串列-單向連結串列&&UVa 11988 Broken Keyboard(a.k.a.Beijiu Text)(破損的鍵盤(悲劇文字)) C++最新的2011標準C++1
【例題 6-21 UVA - 506】System Dependencies
ack ring names cnblogs name ret any fin || 【鏈接】 我是鏈接,點我呀:) 【題意】 在這裏輸入題意 【題解】 記錄每個物品它的依賴有哪些,以及它被哪些東西依賴就可以了。 顯式安裝的東西不能被隱式刪除刪掉(就是rem
UVa 679 例題6-6 小球下落(Dropping Balls)
題目大意: 有一顆滿二叉樹,每個節點是一個開關,初始全是關閉的,小球從頂點落下,小球每次經過開關就會把它的狀態置反,現在問第k個球下落到d層時經過的開關編號。 解題思路: 這道題一開始看的時候,感
紫書例題6-3 (UVa 442)
for lse cout 例題 gif src cstring opened ble 題目地址:https://vjudge.net/problem/UVA-442 題目大意:汗顏,其實我是直接看紫書的中文題意的,大意就是計算兩個矩陣乘法次數,設計線性代數知識,可自己百
例題6-2 UVA 514
挺好的一道題目,想樣例程式碼也想了很久。 大體思路: 整體分為兩個過程,從A到C,從C到B, 用A代表要從A到C的編號序列,肯定是1到n了, 用B代表最終在B的車的編號。 讓A = 1,B = 1,B是最終車輛的陣列索引。 開始迴圈,發現A中的車等於B中的車,則說明了,這輛
【棧】例題6-2 UVa 514
/* 演算法競賽入門 LRJ 例題6-2(UVa 514)Rails */ #include<iostream> #include<cstdio> #include<
刷紫書第三章例題(例題3-4,3-5,3-6)
例題3-4 Master-Mind Hints UVA - 340 MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, B
《物聯網框架ServerSuperIO教程》-19.設備驅動和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本發布
sql 數據庫名 http oracle mongod 文件 https bapi 開發 19.設備驅動和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化 19.1 概述 ServerSuperIO支持設備驅動
Appium 1.6.4 環境搭建流程(Java, Android+IOS, Windows+Mac)
經典 客戶 dev utf-8 4.6.1 新版本 -m works odi Appium1.6.4已經出來一段時間了,快速給大家串一下怎麽搭建,貼了下載鏈接 1 基礎環境: Windows + Mac: Java JDK 1.8+ (需配置環境變量),Appium1
4.6.4 白盒測試(第二部分)
6.4 png image log nbsp src -128 logs 4.6 4.6.4 白盒測試(第二部分)
2017-6-4 用jQuery 做大圖輪播
length move val orm fun margin window blog cli <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_De