UVA11988 【Broken Keyboard (a.k.a. Beiju Text)】:题解

mac2022-06-30  100

题目链接:https://www.luogu.org/problemnew/show/UVA11988

这题虽说是和链表有关的模拟,但其实并不是很需要啊,但蒟蒻用了(说的好听是练手,说的难听是太弱),效果海星。

分析:

此题模拟即可,本人估计难度大概提高-,可以直接数组模拟,也可以用链表存储。主要是每组数据有多组输入,所以读入的方法可以多加注意,我的这种方法海星(这么有自信是因为是跟大佬学的),然后灵魂活运用for语言即可。

其他在代码中说明。

代码:

#include<iostream> #include<cstdio> #include<cmath> using namespace std; char s[100005]; int Next[100005]; int main() { int cur,last; while(~scanf("%s",s+1)) //s+1即读入的s字符串下标从1开始(强迫症患者) { cur=last=0; Next[0]=0;//初始化 for(int i=1;s[i]!='\0';i++) //中间的判断语句意为没有到字符串的结束标志——\0,说白了就是穷尽整个字符串 { char QAQ=s[i]; //QAQ if(QAQ=='[') cur=0; else if(QAQ==']') cur=last;//如果跳到开头了,那就把cur弄成最头上,如果又回来了,那同理到末尾 else { Next[i]=Next[cur]; Next[cur]=i; if(last==cur) last=i; cur=i; } //链表存储 } for(int i=Next[0];i!=0;i=Next[i]) //别致的输出 { printf("%c",s[i]); } printf("\n"); //换行别忘 } return 0; } 完结撒花~

转载于:https://www.cnblogs.com/vercont/p/10210041.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)