10分蒟蒻

P1567 统计天数

@[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


|