gpt4 book ai didi

C程序-找到数组中最大的序列

转载 作者:行者123 更新时间:2023-11-30 14:50:28 25 4
gpt4 key购买 nike

给出这个例子:

int arr[3][7] = {       {1,0,0,1,1,1,1},  //should output 4
{0,1,1,1,1,0,1}, //should output 4
{0,0,1,1,1,1,1}}; //should output 5

找到包含数字1的最大序列,并打印行索引和1的数字。

不要计算每行中的总数 1 。仅当它们是一个接一个的时候

这是我的方法:

int main(){
int i,j,c=0,count=0;

int arr[3][7] = { {1,0,0,1,1,1,1}, //output 4
{0,1,1,1,1,0,1}, //output 4
{0,0,1,1,1,1,1}}; // output 5

for(i=0; i<3; i++){
for(j=0; j<7; j++){
if(arr[i][j] == 1){
c++;
} else if( arr[i][j] == 0 && c > count ) {
count = c;
c = 0;
}
}
printf("%d\n", count);
}

return 0;
}

我现在想要得到的输出是 4,4,5,但我得到的是 1,4,5。

解决方案感谢https://stackoverflow.com/users/1228887/twain249

int main(){
int i,j,c=0,count=0;

int arr[3][7] = { {1,1,0,1,1,1,1}, //output 4
{0,1,1,1,1,0,1}, //output 4
{0,0,1,1,1,1,1}}; // output 5

for(i=0; i<3; i++){
for(j=0; j<7; j++){
if(arr[i][j] == 1){
c++;
} else {
count = c;
c = 0;
}
}
if(c > count){
count = c;
}
printf("%d\n", count);
c=0;
}
return 0;
}

最佳答案

您忘记处理最长序列是列表末尾的情况

在内层j循环之后添加以下内容

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

此外,您还忘记在每次检查后添加清除。

在打印输出后添加

c = clear = 0;

编辑:还有 1 个错误。即使新序列不是最长的,您也需要重置 c

将 else if 改为

else if (arr[i][j] == 0) { // If isn't necessary if 0/1 are your only options
{
if (c > count) {
count = c;
}
c = 0;
}

关于C程序-找到数组中最大的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979596/

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