zoukankan      html  css  js  c++  java
  • UVA 11988 Broken Keyboard (链表)

    简单题,题目要求显然是很多次插入,所以是链表。

    插入两个语句,nxt[i] = nxt[u] 表示 i结点指向u的后继, nxt[u] = i表示把u的后继设成i。

    设置一个头结点,指向一个不存在的结点,维护一下最后一个结点tail。

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5+5;
    int nxt[maxn];
    char s[maxn];
    
    int main()
    {
        //freopen("in.txt","r",stdin);
        while(gets(s+1)){
            int head = 0, cur = 0, tail = 0; nxt[0] = -1;
            for(int i = 1; s[i]; i++){
                if(s[i] == '[') cur = head;
                else if(s[i] == ']') cur = tail;
                else {
                    nxt[i] = nxt[cur];
                    nxt[cur] = i;
                    if(cur == tail) tail = i;
                    cur = i;
                }
            }
            for(int i = nxt[head]; ~i; i = nxt[i] ){
                putchar(s[i]);
            }
            putchar('
    ');
        }
        return 0;
    }
  • 相关阅读:
    CodeForces 546C(队列)
    N皇后摆放问题
    士兵队列
    货币问题
    C
    B
    ACM第三次比赛 Big Chocolate
    ACM比赛(第三次D)
    ACM第三次比赛UVA11877 The Coco-Cola Store
    uva 10382
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4790273.html
Copyright © 2011-2022 走看看