Uva11988 Broken Keyboard (a.k.a. Beiju Text) 题解【模拟链表】

Uva11988 Broken Keyboard (a.k.a. Beiju Text) 题解【模拟链表】

题目:

题目

思路:

1.next[i]表示真实屏幕中字符s[i]右边字符的编号(即在s中的下标),next[0]表示第一个字符的编号, s[next[0]]表示屏幕中应出现的第一个字符,next[最后一个]=0,用(i=next[0];i!=0;i=next[i]),输出应输出的字符s[i]。
2.光标cur表示要插入位置的左边那个,比如i=4时出现’[’,说明下一个字符(s[i=5])要插入到第1个位置,那么先将cur置为0,执行下一次i++,i=5;next[i=5]=next[cur=0];next[cur=0]=5; cur=5移动光标。
3.last表示显示屏中最后一个字符的编号,s[last]为最后一个字符。

不多废话了,上lrj代码,多看几遍代码也就明白了

代码:
#include <cstdio>
#include <cstring>
const int maxn=100000+5;
int last,cur,next[maxn];
char s[maxn];

int main() {
    while(scanf("%s",s+1)==1) {//输入字符从s[1]开始,
        int n=strlen(s+1);
        last=cur=0;
        next[0]=0;
        memset(next, 0, sizeof(next));
        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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面可以对界面显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值