问题标题: 酷町堂:1213 数字消消乐 62分

0
0
已解决
王冠琪
王冠琪
新手守护
新手守护

1213   数字消消乐经验值:0

题目描述 Description

小C喜欢玩游戏,有一天他在电脑上发现了一个叫“数字消消乐”的游戏,其规则如下:
给定一个长度为N的整型数组(正整数),指定一个数a,如果该数组中有3个及3个以上的a连续出现,则该数字将会从数组中消除。小C突然想到可以用编程来解题,请聪明的你帮小C编程实现该功能。

输入描述 Input Description

输入为2行:
第一行为2个整数,分别代表数组长度N以及需要消除的数字a,中间用一个空格隔开;
(其中N≤100)
第二行为N个正整数,每个正整数之间用单个空格隔开。

输出描述 Output Description

输出为1行,表示消除所有数字a之后的新整型数组,每个数之间用单个空格隔开。

样例输入 Sample Input

30 3 16 22 15 3 3 3 5 10 27 18 3 3 3 3 3 21 2 29 3 3 17 3 3 3 3 3 3 26 28 30

样例输出 Sample Output

16 22 15 5 10 27 18 21 2 29 3 3 17 26 28 30

 

 

#include<iostream>
using namespace std;
int a[105],cnt;
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        if(a[i]==m){
            cnt++;
        }
        if(a[i]!=m){
            if(cnt>=3){
                while(cnt!=0){
                    a[i-cnt]=0;
                    cnt--;    
                }
            }
            else{
                cnt=0;
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(a[i]!=0){
            cout<<a[i]<<" ";
        }
    }
    return 0;
}


0
已采纳
汪宇航
汪宇航
新手启示者
新手启示者

int n,t,a[111];

bool b[111];

int main(){

cin>>n>>t;

for(int i=1;i<=n;i++){

cin>>a[i];

}

for(int i=3;i<=n;i++){

if(a[i]==t&&a[i-1]==t&&a[i-2]==t){

b[i]=b[i-1]=b[i-2]=true;

}

}

for(int i=1;i<=n;i++){

if(!b[i]){

cout<<a[i]<<" ";

}

}

0
我要回答