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

无数组/List场景下存储比较整数对、求最大相邻两数和问题

问题核心修正点

  • 新增maxSum变量存储历史最大分组和,初始值设为理论最小和-198(两个边界最小值-99相加的结果),避免负数和场景下的判断错误
  • 新增isFirstInput标记处理首次输入:第一个输入仅赋值给prev不参与求和,避免初始prev=0干扰第一个分组的计算
  • 每次计算完相邻两数的和后,立刻和maxSum比较更新,不需要存储所有历史和
  • 循环终止时直接输出maxSum即可得到结果

修正后完整代码

class Program
{
    static void Main(string[] args)
    {
        const int MAX = 99;
        const int MIN = -99;
        const int TERMINATE_FLAG = 100;
        int current;
        int prev = 0;
        int sum;
        // 初始设为最小可能的和,避免漏算负数和
        int maxSum = -198;
        // 标记是否是第一次输入
        bool isFirstInput = true;
        
        do
        {
            current = Convert.ToInt32(Console.ReadLine());
            // 超出范围就标记为终止值
            if (current > MAX || current < MIN)
            {
                current = TERMINATE_FLAG;
            }

            if (current != TERMINATE_FLAG)
            {
                if (isFirstInput)
                {
                    // 第一个输入只存prev,不计算和
                    prev = current;
                    isFirstInput = false;
                }
                else
                {
                    sum = prev + current;
                    // 更新最大和
                    if (sum > maxSum)
                    {
                        maxSum = sum;
                    }
                    // 把当前值设为下一轮的prev
                    prev = current;
                }
            }
        }
        while (current != TERMINATE_FLAG);

        // 输入至少有两个有效数的话输出最大和,可根据需求加空输入/单输入的兼容
        Console.WriteLine("最大分组和为:" + maxSum);
    }
}

逻辑验证

比如你举的输入例子7、5、3、2、9,计算过程为:

  • 第一次输入7,仅赋值prev=7
  • 输入5,和为12,maxSum=12,prev=5
  • 输入3,和为8,maxSum保持12,prev=3
  • 输入2,和为5,maxSum保持12,prev=2
  • 输入9,和为11,maxSum保持12
  • 输入超出范围的值终止,输出12,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:00