超究极无敌鸡心
2024-02-20 17:53:59
发布于:北京
求助
例子world_c++ 没hello
题干:
T5930.一个有自己想法的键盘
题目描述
有一个有点破损的键盘,但也不能算完全破损的键盘,正在打字员手上被使用着。打字员往往是不看键盘,甚至是不看屏幕的。但不幸的是,键盘上有两个按键出了问题:
HOME 按键,回到行首,偶尔会自己触发功能。
END 按键,到达行尾,偶尔会自己触发功能。
打字员在疯狂地码字,直到他把眼镜重新看到自己的显示器,才发现自己码的内容,乱七八糟。
Description
现在将 HOME 的触发用 [ 表示, END 的触发用 ] 表示。给出若干行输入的字符串,请输出其实际出现在屏幕上的内容。
输入格式
输入若干行,每行一行字符串,[ 表示触发 HOME , ] 表示触发 END。
输出格式
输出若干行,每行对应一个输入行的实际结果。
输入输出样例
输入#1
复制
hello_[world]_c++
[[]][][]Beiju_University
输出#1
复制
worldhello__c++
Beiju_University
说明/提示
每行字符串长度不超过
1000000
1000000。
【样例解释 #1】
hello_ 后遇到 [,回到行首,从 hello_ 前面输入,worldhello_。遇到 ],到达行尾,从 worldhello_ 后面开始输入,得到 worldhello_c++。
[[]][][] 到达行尾,然后输入 Beiju_University,得到 Beiju_University。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
struct node {
    char data;
    int prev, next;
};
node point[N];
int head, tail, lp;
int main () {
	string s;
	while(cin>>s){
		int l = s.length();
		head = 1; tail = l;
		point[head].prev = 0;point[head].next = tail;
		point[tail].next = 0;point[tail].prev = head;
		int p = 1, idx = 1;
		for(int i = 0;i < l;i++){
			if(s[i] == '[') 
				p = point[head].next;
			else if(s[i] == ']') 
				p = tail;
			else{
				point[++idx].data = s[i];
				point[point[p].prev].next = idx;
				point[idx].prev = point[p].prev;
				point[idx].next = p;
				point[p].prev = idx; 
			}
			
		}
		p = point[head].next;
		while(p!=tail){
			cout<<point[p].data;
			p = point[p].next;
		}
		cout<<endl;
	}
}
球球各位大佬救一下qwq
全部评论 3
fwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfwfw
2024-02-20 来自 北京
0#include <bits/stdc++.h>
using namespace std;const int N = 1000090;
struct node {
char data;
int prev, next;
};
node point[N];
int head, tail, lp;void print_lst() {
int step = head;2024-02-20 来自 北京
0我c++没有缺一个+
2024-02-20 来自 北京
0











有帮助,赞一个