gpt4 book ai didi

C++如何找出数组中最连续的数字?

转载 作者:行者123 更新时间:2023-11-30 04:44:01 24 4
gpt4 key购买 nike

大家好,我正在尝试编写一个代码,当我键入一个二进制字符串时,我需要注意出现次数最多的连续次数 1。例如,如果我输入 00111001,它应该是 3、1100111011111,它应该是 5 等等。这是我目前的代码。

int main () {


string s1;
cin >> s1;
int l1=s1.size()-1; // length-1 hence the for loop array doesnt go out of bounds
int max=0; // this tells us the max number of occurrence
int count=0;

for (int i=0;i<l1;i++) {


if (s1[i]=='1' && s1[i+1]=='1') { // if s[0] and s[1] are both 1, it adds 1
count++;}


if (count>0 && count>max)
{max=count; // storing the count value in max.
}

if (s1[i]=='0' || s1[i+1]=='0'){ //resetting count if it encounters 0

count=0;
}
}
max=max+1;


cout << max << '\n' << endl;

问题是如果我写 1111001 它运行(我得到 4),但是当我输入 1100111001 时我得到 2。不明白为什么会有歧义。请让我知道我需要做什么谢谢

最佳答案

我只会在 1 的情况下增加计数,并在达到 0 时将其归零。每当 count 大于 max 时,将 count 分配给 max 即可。顺便说一句,我用你的程序输入 1100111001 得到 3。

#include <iostream>

using namespace std;

int main() {


string s1;
cin >> s1;
int l1 = s1.size();
int max = 0;
int count = 0;

for (int i = 0; i < l1; i++)
{
if (s1[i] == '1')
{
count++;
}
else
{
count = 0;
}

if (count > max)
{
max = count;
}

}

cout << max << '\n' << endl;
}

关于C++如何找出数组中最连续的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57936366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com