【发布时间】:2020-04-16 16:23:02
【问题描述】:
我正在 Coursera 学习 C 语言课程,在那里我遇到了一个作业,要求我编写一段代码,该代码可以判断数组中的最大递增序列。例如,对于数组{3,5,0,7,8,9},它应该返回我三个作为最大值。我写了两段代码,我认为它们都应该能够通过。但是,只有其中一个人这样做了,我不知道为什么。
这是第一段通过的代码:
#include <stdio.h>
#include <string.h>
size_t maxSeq(int*array, size_t n){
size_t maxLength = 0;
size_t counter = 1;
if(n == 0){
return maxLength;
}
if(n == 1){
maxLength = 1;
return maxLength;
}
for(int i = 1;i < n;i++){
if((array[i]-array[i-1])>0){
counter += 1;
}else{
if(maxLength < counter){
maxLength = counter;
}
counter = 1;
}
}
if(maxLength < counter){
maxLength = counter;
}
return maxLength;
}
这是第二段没有通过的代码:
#include <stdio.h>
#include <string.h>
size_t maxSeq(int*array, size_t n){
int maxLength = 0;
int counter = 1;
if( n== 0){
return maxLength;
}
if(n == 1){
maxLength = 1;
return maxLength;
}
for(size_t i = 1;i < n;i++){
if((array[i]-array[i-1])>0){
counter += 1;
if(counter >= maxLength){
maxLength = counter;
}
}else if((array[i]-array[i-1])<=0){
counter = 1;
}
}
return maxLength;
}
【问题讨论】:
-
你的意思是你想确定长度数组元素的最大(严格)递增序列。序列本身不能用单个数字来表征。在这种情况下,我不明白为什么
{3,5,0,7,8,9}的预期结果会是 3。子序列{0,7,8,9}严格递增并且长度为 4。 -
对不起,最大递增序列的长度应该是4。