一维数组最大子数组(一)

题目:返回一个整数数组中最大子数组的和。

要求: 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

思路:把每个和放在二维数组中,找出最大数根据i和j的关系就找到最大数组,不过时间复杂度是o(n^2),还在试着用链表的方式可以使他的时间复杂度是o(n^2)输出

代码:

复制代码
#include <iostream>
#define N 8
using namespace std;

void main()
{
    int fuhao,a[N],b[N][N]={0},k=0;
    int i,j,I,J;
    for (i=0;i<N;i++)
    {
        fuhao=rand()%2;
        a[i]= (fuhao==0) ? -rand()%100:rand()%100;
        cout<<"a["<<i<<"]="<<a[i]<<endl;
    }
    for (j=0;j<N;j++)
    {
        b[0][j]=a[j];
    }
    for(j=0;j<N;j++)
    {
        for (i=1;i<N-j;i++)
        {
                b[i][j]=a[i+j]+b[i-1][j];
        }
    }

    for (i=0;i<N;i++)
    {
        for (j=0;j<N;j++)
        {
            if(b[i][j]>k)
            {
                k=b[i][j];
                I=i;
                J=j;
            }
        }
    }
    cout<<endl;
    cout<<"k="<<k<<endl;
    cout<<"最大子数组为:"<<endl;
    for (i=0;i<I+1;i++,J++)
    {
        cout<<J<<"   "<<a[J]<<endl;
    }
    cout<<endl;
}
复制代码

 

截图:

posted @   hy叶子  阅读(211)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示