您的位置:首页 > 职场人生

笔试和面试题(4)---最大子序列与最大子矩阵问题

2014-03-15 22:34 267 查看
1、给定一个数组,其中元素有正,也有负,找出其中一个连续子序列,使和最大。

B[i+1]=B[i]>0?B[i]+num[i+1]:num[i+1]

#include <iostream>
using namespace std;
const int M = 1000;
int num[M];
int ans[M];
int n,an;
int main()
{
    cin>>n;
    for(int i=0; i<n; i++)
        cin>>num[i];
    an=num[0];
    for(int i=0; i<n; i++)
    {
        if(ans[i]>0)
        {
            ans[i+1]=num[i+1]+ans[i];
        }
        else
        {
            ans[i+1]=num[i+1];
        }
    }
    for(int i=1;i<=n;i++)
    {
        an=max(an,ans[i]);
    }
    cout<<an<<endl;
    return 0;
}


2、给定一个矩阵(二维数组),其中数据有大有小,请找一个子矩阵,使得子矩阵的和最大,并输出这个和。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: