• 祖玛游戏


    祖玛游戏

    问题描述:
    祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色。此后,你可以发射珠子到轨道上并加入原有序列中。一旦有三个或更多同色的珠子变成相邻,它们就会立即消失。这类消除现象可能会连锁式发生,其间你将暂时不能发射珠子。
    开发商最近准备为玩家写一个游戏过程的回放工具。他们已经在游戏内完成了过程记录的功能,而回放功能的实现则委托你来完成。
    游戏过程的记录中,首先是轨道上初始的珠子序列,然后是玩家接下来所做的一系列操作。你的任务是,在各次操作之后及时计算出新的珠子序列。
    输入格式:
    第一行是一个由大写字母’A’~’Z’组成的字符串,表示轨道上初始的珠子序列,不同的字母表示不同的颜色。
    第二行是一个数字,表示整个回放过程共有次操作。
    接下来的行依次对应于各次操作。每次操作由一个数字和一个大写字母描述,以空格分隔。其中,为新珠子的颜色。若插入前共有颗珠子,则表示新珠子嵌入之后(尚未发生消除之前)在轨道上的位序。
    输出格式:
    输出共行,依次给出各次操作(及可能随即发生的消除现象)之后轨道上的珠子序列。
    如果轨道上已没有珠子,则以“-”表示。
    样例输入:
    ACCBA
    5
    1 B
    0 A
    2 B
    4 C
    0 A
    样例输出
    ABCCBA
    AABCCBA
    AABBCCBA
    -
    A
    规则:
    这个游戏与平时的祖玛游戏不太一样。
    在AAABBCCC中的A和B之间插入B时,BBB消去,CCC也消去,但是AAA不会改变。
    输入也会出现空串的情况,使用gets读

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn=2010;
    int n,x;
    char y,a[maxn],tmp[maxn];
    bool judge(int t)
    {
        int step=0,tmpo=t;
        while(tmpo<=strlen(a)&&a[tmpo++]==a[t])
        step++;tmpo=t-1;
        while(tmpo>=0&&a[tmpo--]==a[t])
        step++;
        if(step>=3)
        return 1;
        return 0;
    }
    int change(int t)
    {
        int end=t,star=t;
        while(a[star]==a[t])
        star--;star++;
        while(a[end]==a[t])
        end++;
        strcpy(a+star,a+end);
        if(a[star]==a[star-1])
        {
            if(star==0)
            return 1;
            return star;
        }
        else if(a[star]==a[star+1])
        return star;
        return 0;
    }
    int main()
    {
        freopen("ha.in","r",stdin);
        freopen("ha.out","w",stdout);
        gets(a);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>x>>y;
            strcpy(tmp,a+x);
            a[x]=y;
            strcpy(a+x+1,tmp);
            while(judge(x))
            x=change(x);
            if(a[0]=='')
            cout<<"-"<<endl;
            else cout<<a<<endl;
        }
        fclose(stdin);fclose(stdout);
        return 0;
    }
  • 相关阅读:
    课堂练习-电梯调度
    团队开发项目———来用————用户调研报告
    购书思想课堂作业4.14
    针对《来用》的NABC分析
    《梦断代码》读书笔记3
    《梦断代码》读书笔记2
    《大道至简》阅读笔记2
    《大道至简》阅读笔记1
    课堂练习之找出所有的“1”
    典型用户与场景分析
  • 原文地址:https://www.cnblogs.com/cax1165/p/6070907.html
Copyright © 2020-2023  润新知