算法求解-最大和子序列问题(C#)

1、算法目标:

题目描述

设数组a是有n个元素的整数数组,如何从中找出最大和子序列的和?

输入

第一行输入n

第二行输入n个数

输出

输出最大和子序列的和

样例输入

4

2 -1 3 -4

样例输出

4

2、算法实现:

csharp 复制代码
using System;

class Program
{
    static void Main()
    {
        // 读取输入
        int n = int.Parse(Console.ReadLine());
        string[] input = Console.ReadLine().Split();
        int[] array = new int[n];
        
        for (int i = 0; i < n; i++)
        {
            array[i] = int.Parse(input[i]);
        }

        // 使用 Kadane 算法找到最大和子序列
        int maxSoFar = int.MinValue;
        int maxEndingHere = 0;

        for (int i = 0; i < n; i++)
        {
            maxEndingHere += array[i];

            if (maxSoFar < maxEndingHere)
            {
                maxSoFar = maxEndingHere;
            }

            if (maxEndingHere < 0)
            {
                maxEndingHere = 0;
            }
        }

        // 输出结果
        Console.WriteLine(maxSoFar);
    }
}

3、代码解释

读取输入:

第一行读取数组的长度 n。

第二行读取 n 个整数,并将其存储在数组 array 中。
初始化变量:

maxSoFar 用于存储到目前为止找到的最大和,初始值为 int.MinValue,表示最小的整数。

maxEndingHere 用于存储当前子序列的和,初始值为 0。
遍历数组:

对于每个元素,将其加到 maxEndingHere 上。

如果 maxEndingHere 大于 maxSoFar,则更新 maxSoFar。

如果 maxEndingHere 小于 0,则重置 maxEndingHere 为 0,因为负数会降低后续子序列的和。
输出结果:

最后输出 maxSoFar,即最大和子序列的和。

样例输入输出

对于样例输入:

csharp 复制代码
4
2 -1 3 -4

程序的输出:

csharp 复制代码
4

这是因为最大和子序列是 [2, -1, 3],其和为 4。

相关推荐
curemoon1 小时前
理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)
人工智能·算法·矩阵
柃歌1 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法
柃歌1 小时前
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
java·数据结构·笔记·学习·算法
SKYDROID云卓小助手2 小时前
无人设备遥控器之如何分享数传篇
网络·人工智能·算法·计算机视觉·电脑
Lqingyyyy2 小时前
P2865 [USACO06NOV] Roadblocks G 与最短路的路径可重复的严格次短路
开发语言·c++·算法
WHATEVER_LEO3 小时前
【每日论文】Text-guided Sparse Voxel Pruning for Efficient 3D Visual Grounding
人工智能·深度学习·神经网络·算法·机器学习·自然语言处理
Aimeast3 小时前
关于选择最佳.NET Core SSH服务器库的全面分析
c#·ssh
蒋劲豪4 小时前
WPF项目暴露WebApi接口;WinForm项目暴露WebApi接口;C#项目暴露WebApi接口;
开发语言·c#·wpf
Vacant Seat4 小时前
贪心算法-买卖股票的最佳时机
java·数据结构·算法·贪心算法
郑州吴彦祖7724 小时前
数据结构——二叉树经典习题讲解
java·数据结构·算法·leetcode