参考书选择

我选择的是 [代码大全2英文版(完整清晰版)].chm

问题分析

对于一维的情况,经典的方式是使用前缀数组s[i]表示a[0]至a[i]的加和,区间最大和若是a[i]至a[j]则等价于s[j]-s[i-1]。以j结尾的区间的最大和必然等于s[j]减去j之前的s中的最小值,而这这个位置是单调递增的。因此时间复杂度为O(n)。

那么我们进入二维的。

同理:

设s[x][y]为以坐标(0,0)为左上角,(x,y)为右下角的点所形成的的矩形的加和。以(a,b)(x,y)构成的矩形的值为,(s[x][y] - s[a-1][y])-(s[x][b-1] - s[a-1][b-1]),不具备一维时的单调性,只能通过在此枚举一行。时间复杂度为O(m*n*n),无法达到最好的O(m*n)。

f = open("num.txt", "r")

a = []#数组

for line in f.readlines():

a.append(int(line))

n = len(a)

ss = 0

s = []#前缀数组

for i in range(0,n):

ss += a[i]

s.append(ss)

small = 65535

big = -65535

for i in range(0,n):

if s[i] < small:

small = s[i]

if s[i] - small > big:

big = s[i] - small

print big

x=raw_input("row number\n")

y=raw_input("line number\n")

f=open("num.txt","r")

num=[]

for i in range(0,int(x)):

for j in range(0,int(y)):

l=f.readline()

l=l.strip('\n').split(",")

num.append(l)

temp=[0]*int(x)

s=0

a=-1000000

for i in range(0,int(y1)):

for j in range(i,int(y1)):

for k in range(0,int(x)):

temp[k]+=int(num[j][k])

if(s+temp[k]<temp[k]):

s=0

s+=temp[k]

if(a<s):

a=s

s=0

s=0

temp=[0]*int(x)

print a

代码二,已测试过。

work1的更多相关文章

  1. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  2. Node.js:进程、子进程与cluster多核处理模块

    1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...

  3. 15.linux按键驱动程序(二)

    linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一.定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开.因而 ...

  4. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...

  5. SDOI 2016 游戏

    树链剖分 线段树维护区间最小值,区间最大值 更新,对于每一个区间,找到当前区间的最小值的最大值,和要更新的值比较,如果比最大值还大,则此数对于以后的询问无任何贡献,直接返回即可,若有贡献,则一直递归到 ...

  6. WebWorker的importScripts方法

    简述 在<JavaScript高级程序设计(第三版)>中,提到WebWorker的importScripts方法是异步执行的,然而在 另一本书<Javascript权威指南>中 ...

  7. spring task 配置

    Spring对Quartz作了一个封装,同时,Spring自己也提供了一个任务定时器(spring-task),现把它总结一下.    对于Quartz,我们使用的时候主要是注重两个方面,一个是定时任 ...

  8. Hibernate学习笔记3

    ---恢复内容开始--- 一.hibernate如何转化jdbc代码实例[通过hibernate构建jdbc后往数据库传对象] import java.sql.Connection;import ja ...

  9. hdu 4898 The Revenge of the Princess’ Knight

    传送阵:http://acm.hdu.edu.cn/showproblem.php?pid=4898 题目大意:一个首尾相连的字符串,将其分为k个子串,使得最大的字串最小 将所有子串排序,输出第k小即 ...

随机推荐

  1. 1964-NP

    描述 Problems in Computer Science are often classified as belonging to a certain class of problems (e. ...

  2. WAF SSI

    http://www.2cto.com/Article/201405/299154.html

  3. PHP 怎么随机获取数组里面的值

    注意array_rand随机返回的是KEY值的集合 <?php srand((float) microtime() * 10000000); $input = array("Neo&q ...

  4. highcharts 折线图

    <!doctype html> <html lang="en"> <head> <script type="text/javas ...

  5. android 安全需要关注

    1.通过签名校验保护,能有效避免应用被二次打包,杜绝盗版应用的产生2.对内存数据进行变换处理和动态跟踪,有效防止数据被获取和修改3.对代码进行加密压缩,可防止破解者还原真实代码逻辑,避免被复制4.多重 ...

  6. tinyXml在linux下的使用

    [下载] 一.下载 xml 软件包:tinyxml_2_6_2.zipTinyxml(轻量级 c++)下载地址:http://sourceforge.net/projects/tinyxml/?sou ...

  7. 93. Restore IP Addresses

    题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...

  8. UVA548——Tree(中后序建树+DFS)

    Tree You are to determine the value of the leaf node in a given binary tree that is the terminal nod ...

  9. WCF异步

    WCF异步与否由客户端来决定 服务端接口: // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”.    [ServiceContract]   ...

  10. Ant build.xml 批量打渠道包回顾!打第三方jar包总结

    配置: eclipse3.9 + ADT22 + sdk 4.0 eclipse带自动混淆的,不过只有在我们手动创建包的时候,才去打签名,去混淆! 开启混淆这样做吧! 必备文件3个: 当然进行ant打 ...