zoukankan      html  css  js  c++  java
  • 小米oj 数组差(挺好的题)

    - 数组差

    序号:#46难度:困难时间限制:1000ms内存限制:10M

    描述

    给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组元素和的差的绝对值 |SUM(A) - SUM(B)| 最大。 返回这个最大的差值。 例如: 有一个数组{1, 2, -3, 1},可以从中找出两个子数组A = {1, 2}与B = {-3},这两个子数组的元素和分别为 SUM(A) = 3,SUM(B) = -3,因此可以求得差的最大值 |SUM(A) - SUM(B)| = 6。

    输入

    使用逗号(,)分隔的一个整数数组

    输出

    一个整数,表示两个子数组元素和的差的最大值

    输入样例

    1,2,-3,1

     复制样例

    输出样例

    6

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    char buf[1000005];
    int a[1005];
    int read(char *buf,int* num)
    {
        int cnt=0;
        int  v;
        char *p = strtok(buf,",");
        while(p)
        {
            sscanf(p,"%d",&v);
            num[cnt++]=v;
            p = strtok(NULL,",");
        }
        return cnt;
    }
    int lmax[1005];
    int lmin[1005];
    int rmax[1005];
    int rmin[1005];
    int main()
    {
      //  freopen("in.txt","r",stdin);
        while(~scanf("%s",buf))
        {
            int n=read(buf,a);
            int ma=-0x3f3f3f3f;int mi=0x3f3f3f3f;
            int tmp1=0;int tmp2=0;
            for(int i=0;i<n;i++)
            {
                tmp1=tmp1<0?a[i]:tmp1+a[i];
                ma=max(ma,tmp1);
                lmax[i]=ma;
                tmp2=tmp2>0?a[i]:tmp2+a[i];
                mi=min(mi,tmp2);
                lmin[i]=mi;
            }
            tmp1=0;tmp2=0;
            ma=-0x3f3f3f3f;mi=0x3f3f3f3f;
            for(int i=n-1;i>=0;i--)
            {
                tmp1=tmp1<0?a[i]:tmp1+a[i];
                ma=max(ma,tmp1);
                rmax[i]=ma;
                tmp2=tmp2>0?a[i]:tmp2+a[i];
                mi=min(mi,tmp2);
                rmin[i]=mi;
            }
            int ans=0;
            for(int i=1;i<n;i++)
            {
                ans=max(ans,abs(lmax[i-1]-rmin[i]));
                ans=max(ans,abs(lmin[i-1]-rmax[i]));
            }
            printf("%d ",ans);
        }
        return 0;
    }
     

  • 相关阅读:
    e621. Activating a Keystroke When Any Child Component Has Focus
    e587. Filling Basic Shapes
    e591. Drawing Simple Text
    e595. Drawing an Image
    e586. Drawing Simple Shapes
    e636. Listening to All Key Events Before Delivery to Focused Component
    在 PL/SQL 块的哪部分可以对初始变量赋予新值? (选择1项)
    Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)
    你判断下面语句,有什么作用?(单选)
    Oracle数据库表空间与数据文件的关系描述正确的是( )
  • 原文地址:https://www.cnblogs.com/linruier/p/9972869.html
Copyright © 2011-2022 走看看