问题标题: 1213 数字消消乐

2
0
已解决
梁彦博
梁彦博
初级光能
初级光能

题目内容:

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

本人错误代码:

#include <iostream>
#include <iomanip> 
using namespace std;

int main()
{
    int shu,i,j,k=0,c;
    int a[100];
    cin>>shu>>c;
    for (i=1;i<=shu;i++)
    {
        cin>>a[i];
    }
    for (i=1;i<=shu;i++) if (a[i]==c) k++;
    for (i=1;i<=shu;i++) if (k>=3) 
    {
        if (a[i]!=c) cout<<a[i]<<" ";
    }
    return 0;
}

题目链接:点击此处


0
已采纳
张国鉴
张国鉴
资深守护
资深守护
  for (int i=1;i<=n;i++){
        if (a[i]==x&&a[i+1]==x&&a[i+2]==x){
            while (a[i]==x){
                a[i]=0;
                i++;
            }
        }
    }

双重循环判断三个的时候将为a的数字赋0,在输出时处理

0
0
0
张睿杰
张睿杰
初级天翼
初级天翼
for(int k=i;k<=n-1;k++)
            {
                if(a[k]==m) ans++;
                else
                {
                    break;
                }
//              cout<<"ans="<<ans<<endl;
            }
        if(ans>=3) i=i+ans-1;
        else cout<<a[i]<<' ';
        ans=0;

这是核心

剩下的你自己思考

0
王焜
王焜
新手守护
新手守护

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

if (a[i]==x&&a[i+1]==x&&a[i+2]==x){

while (a[i]==x){

a[i]=0;

i++;

}

}

}

双重循环判断

0
赵思聪
赵思聪
初级守护
初级守护
for(int i=1;i<=b;i++)
    {
        for(int j=i;j<=b;j++)
        {
            if(a[j]==c)
            {
                t++;
            }
            else
            {
                break;
            }
        }
        if(t>=3)
        {
            i=i+t-1;
        }
        else
        {
            cout<<a[i]<<" ";
        }
        t=0;
    }

 注意要减一;否则可能会漏数字

0
我要回答