zoukankan      html  css  js  c++  java
  • T4310 祖玛游戏

    题目描述

    祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干

    个彩色珠子,其中任意三个相邻的珠子不会完全同色。此后,你可以发射珠子到

    轨道上并加入原有序列中。一旦有三个或更多同色的珠子变成相邻,它们就会立

    即消失。这类消除现象可能会连锁式发生,其间你将暂时不能发射珠子。

    开发商最近准备为玩家写一个游戏过程的回放工具。 他们已经在游戏内完成

    了过程记录的功能,而回放功能的实现则委托你来完成。

    游戏过程的记录中,首先是轨道上初始的珠子序列,然后是玩家接下来所做

    的一系列操作。你的任务是,在各次操作之后及时计算出新的珠子序列。

    输入输出格式

    输入格式:

    第一行是一个由大写字母'A'~'Z'组成的字符串, 表示轨道上初始的珠子序列,

    不同的字母表示不同的颜色。

    第二行是一个数字n,表示整个回放过程共有n次操作。

    接下来的n行依次对应于各次操作。每次操作由一个数字k和一个大写字母∑

    描述, 以空格分隔。 其中, ∑为新珠子的颜色。 若插入前共有m颗珠子, 则k ∈ [0,m]

    表示新珠子嵌入之后(尚未发生消除之前)在轨道上的位序。

    输出格式:

    输出共n行,依次给出各次操作(及可能随即发生的消除现象)之后轨道上

    的珠子序列.

    如果轨道上已没有珠子,则以“-”表示。

    输入输出样例

    输入样例#1:
    ACCBA
    5
    1 B
    0 A
    2 B
    4 C
    0 A
    输出样例#1:
    ABCCBA
    AABCCBA
    AABBCCBA
    -
    A

    说明

    100%的数据满足1 ≤ n ≤ 10^3 ,0 ≤ m ≤ 2 × 10^3 。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int where;
     6 int flag=0;
     7 string c;
     8 string a;
     9 int n;
    10 void pd()
    11 {
    12     int tot=1;
    13     do
    14     {
    15         flag=0;
    16         tot=1;
    17         int h=where-1,t=where+1,now=where;
    18         while(a[h]==a[now]&&h>=0)
    19         {
    20             tot++;
    21             h--;
    22         }
    23         h++;
    24         while(a[t]==a[now]&&t<a.size())
    25         {
    26             tot++;
    27             t++;
    28         }
    29         t--;
    30         if(tot>=3)
    31         {
    32             //cout<<endl<<a<<"******"<<endl;
    33             a.erase(h,tot);
    34             flag=1;
    35             //cout<<endl<<a<<"-------"<<endl;
    36         }
    37         where=h;
    38     }while(flag==1);
    39 
    40 }
    41 int main()
    42 {
    43     getline(cin,a);
    44     scanf("%d",&n);
    45     while(n--)
    46     {
    47         cin>>where>>c;
    48         a.insert(where,c);
    49         pd();
    50         if(a.size()==0)
    51         cout<<"-"<<endl;
    52         else cout<<a<<endl;
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    布局
    面向对象....(概况)
    下拉城市列表
    下拉列表
    内容窗体
    《面向对象》-继承
    《面向对象》--类
    《面向对象》第一讲
    常用的正则表达式
    正则表达式
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6817806.html
Copyright © 2011-2022 走看看