顺序表应用7:最大子段和之分治递归法(SDUT 3664)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 50005;
int num = 0;
struct node
{
int *elem;
int len;
};
void Creatlist(struct node &list, int n)
{
list.elem=new int[maxn];
if(!list.elem)
exit(OVERFLOW);
for(int i=1; i<=n; i++)
{
scanf("%d",&list.elem[i]);
list.len++;
}
}
int get_ans(struct node &list, int l, int r)
{
num ++;
int sum1, sum2, sum3, sum4, mav3, mav4;
if(l == r)
{
if(list.elem[l] < 0)
return 0;
else
return list.elem[l];
}
int m = (l + r) / 2;
sum1 = get_ans(list, l, m);
sum2 = get_ans(list,m + 1, r);
sum3 = sum4 = 0;
mav3 = mav4 = 0;
for(int i = m; i >= l; i --)
{
sum3 += list.elem[i];
mav3 = max(mav3,sum3);
}
for(int i = m + 1; i <= r; i ++)
{
sum4 += list.elem[i];
mav4 = max(mav4,sum4);
}
int ans = 0;
ans = max(sum1, sum2);
ans = max(ans, mav3 + mav4);
return ans;
}
int main()
{
int n;
struct node list;
scanf("%d",&n);
Creatlist(list, n);
num = 0;
int ans = get_ans(list,1,n);
printf("%d %d\n", ans, num);
return 0;
}
顺序表应用7:最大子段和之分治递归法(SDUT 3664)的更多相关文章
- 顺序表应用8:最大子段和之动态规划法(SDUT 3665)
Problem Description 给定n(1<=n<=100000)个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a ...
- jdk顺序表笔记
一.AbstractCollection 提供了集合的最大实现 继承该类,必须实现size()和iterator(),因为该类操作集合都是通过iterator 二.fail-fast策略 该策略在集合 ...
- c++顺序表基本功能
头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
- 《数据结构》2.2顺序表(sequence list)
//顺序表节点的定义 typedef struct { datatype data[MAXSIZE]; //数组容量的上限 int len; //记录最后一个元素的位置,相当于一个指针,表空时len= ...
- c数据结构 顺序表和链表 相关操作
编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...
- java顺序表和树的实现
一.顺序表 1.线性表 //java顺序表的实现,如ArrayList就是用线性表实现的,优点是查找快,缺点是添加或删除要移动很多元素,速度慢 public class SequenceList { ...
- 数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
- 顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
随机推荐
- java类的访问修饰符
1.java中外部类的访问修饰符有如下四种: public,默认,abstract,final // public,默认,abstract,final. public class Test1 {} c ...
- java之理解面向对象
1.程序设计的三种基本结构 顺序结构 顺序结构表示程序中的各操作是按照它们在源代码中的排列顺序依次执行的 选择结构 选择结构表示程序的处理需要根据某个特定的条件选择其中的一个分支执行.选择结构有单选择 ...
- Linux装好系统之后配置环境
1.配置IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static D ...
- TeamCity安装和配置
目录 TeamCity安装和配置 前言 持续集成(CI) TeamCity 环境 安装 配置TeamCity 项目构建 效果展示 TeamCity自动构建项目及集成IDEA(待更新......) 结束 ...
- 案例-使用MapReduce实现join操作
哈喽-各位小伙伴们中秋快乐,好久没更新新的文章啦,今天分享如何使用mapreduce进行join操作. 在离线计算中,我们常常不只是会对单一一个文件进行操作,进行需要进行两个或多个文件关联出更多数据, ...
- VBA if...elseif...else语句
一个If语句,后面可以跟一个或多个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为false时执行else语句块. 语法 以下是VBScript中If...Elseif ...
- Oracle学习笔记:update的字段中包括单引号
平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...
- js原生方法的重写
讲干货,不啰嗦,通过prototype可以获取到JavaScript的原型对象,进而可以在对象原型上添加新的属性和方法,当该方法与原方法名称一样时会覆盖原方法既:重写,当不一样时既:添加 如:实现数组 ...
- H5各种头部meta标签功能大全
<!DOCTYPE html> H5标准声明,使用 HTML5 doctype,不区分大小写 <head lang=”en”> 标准的 lang 属性写法 <meta ...
- # 机器学习算法总结-第九天(XGboost)