在入门c++,人不很聪明。请问这段代码到底那一部分和问题冲突了??
问题如下:(来自csdn学习社区的每日编程题)
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3。(测试用例仅做参考,我们会根据代码质量进行评分)
#include <stdio.h>
#include <stdlib.h>
void solution(int n,int arr []){
int i=0;
int len=1;
int maxlen=1;
for(i=0;i<n-1;i++){
if(arr[i]<arr[i+1])
len++;
else
if(len>maxlen){
maxlen=len;
len=1;
}
}
printf("%d",maxlen);
// TODO: 请在此编写代码
}
int main() {
int n;
scanf("%d", &n);
int* arr;
arr = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
你这代码也不全啊,有两个问题:
(1)solution函数中,for循环下面需要用if(len>maxlen)判断一下,否则 1 2 3 4 5这种输入就会出错。
(2)main函数中没有调用solution函数。
代码完善如下:
#include <stdio.h>
#include <stdlib.h>
void solution(int n, int arr[]) {
int i = 0;
int len = 1;
int maxlen = 1;
for (i = 0; i < n - 1; i++) {
if (arr[i] < arr[i + 1])
len++;
else
if (len > maxlen) {
maxlen = len;
len = 1;
}
}
if (len > maxlen)
maxlen = len;
printf("%d", maxlen);
}
int main() {
int n;
scanf("%d", &n);
int* arr;
arr = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
solution(n, arr);
return 0;
}
solution函数都没调用。
#include <stdio.h>
#include <stdlib.h>
void solution(int n,int arr []){
int i=0;
int len=1;
int maxlen=1;
for(i=0;i<n-1;i++){
if(arr[i]<arr[i+1])
len++;
else
if(len>maxlen){
maxlen=len;
len=1;
}
}
printf("%d",maxlen);
}
int main() {
int n;
scanf("%d", &n);
int* arr;
arr = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
solution(n, arr);
free(arr);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!