You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++计算连续年份高度不降序列长度结果错误问题排查

代码问题分析
  • 相邻年份判断条件错误
    需求要求相邻两项年份差值为1,你代码中判断条件写为T[i + 1] == T[i],实际是判断年份相等,完全不符合需求。你的输入样例里只有前两项年份同为1960,符合该错误条件,所以计数只累加了1次,这就是你输出结果为1的直接原因,该条件应该修改为T[i + 1] - T[i] == 1。
  • 连续计数逻辑错误
    你没有单独维护「当前连续符合条件的计数」变量,直接对存储最大值的maxdb累加,一旦中间出现不符合条件的项,计数不会重置,也无法正确统计不同连续段的最大值。
  • 输出位置错误
    cout << maxdb;写在遍历循环内部,会在每次循环时都打印一次当前的计数,而非最后输出最终的最大值。
  • 语法不规范(非直接报错原因,但不符合C标准)
    int T[N];、int Mag[N];属于变长数组(VLA),是C语言特性,标准C
    不支持该写法,在部分编译器下可能无法正常编译,建议替换为std::vector。
修复后的参考代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int N;
    cin >> N;
    vector<int> T(N);
    vector<int> Mag(N);
    for (int i = 0; i < N; i++)
    {
        cin >> T[i] >> Mag[i];
    }
    int maxdb = 0;
    int curr = 0;
    for (int i = 0; i < N - 1; i++)
    {
        if (T[i + 1] - T[i] == 1 && Mag[i + 1] >= Mag[i])
        {
            curr++;
            maxdb = max(maxdb, curr);
        }
        else
        {
            curr = 0;
        }
    }
    cout << maxdb << endl;
    return 0;
}

针对你给出的输入样例,修复后代码会正确输出2,符合预期结果。

内容的提问来源于stack exchange,提问作者user17173786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:09:01