@[xibaby](/user/995569)
a[0] 是 0, 要将a[0]定义为1e9,否则一开始会出错\
要定义一个max存最长连续天数,你输出的不是最大值\
~~不要脸地求个关注~~
by gaojizhe05 @ 2023-11-25 20:14:10
@xibaby,你的程序有两个问题。
1.你需要一个变量来存储最长的连续天数,如下:
if(a[i]>a[i-1])
{
s++;
}
else
{
max=s;
s=1;
}
2.你需要把for循环的起始数值设为2,否则a[0]也会参与运算,如下:
for(int i=2;i<=n;i++){
......
}
by Hans12 @ 2023-11-25 20:29:22
@[gaojizhe05](/user/699271) @[Hans12](/user/866612) 非常感谢两位大佬!我的代码经过如下改动,何以90分?
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[1000001],s,ma;
int main(){
scanf("%d",&n);
for(int i=2;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]>a[i-1]) s++;
else s=1;
ma=max(s,ma);
}
printf("%d",ma);
return 0;
}
```
by xibaby @ 2023-11-25 23:38:05
@[xibaby](/user/995569) 依旧有两个问题,1.因为你的循环从2开始,a[1]没有输入,你可以在循环外面进行一个a[1]的输入: scanf("%d",&n); scanf("%d",&a[1]);for(int i=2;i<=n;i++){ ......} 2.你需要把max函数加入到else里面,否则ma会等于1,如下: else{ ma=max(s,ma); s=1; } 希望这些对你有帮助
by Hans12 @ 2023-11-26 10:13:52
@[xibaby](/user/995569) 在定义变量时要用long long,s刚开始要赋值为1:
long long n,a[1000002],s=1,ma;
然后你最好把max函数放在if(a[i]>a[i-1])s++的后面:if(a[i]>a[i-1])
{
s++;
ma=max(s,ma);
}
经过我多次的测试,现在你的程序已经可以全部AC了!
by Hans12 @ 2023-11-26 10:52:54
@[Hans12](/user/866612) 非常感谢!
by xibaby @ 2023-11-26 12:12:13