homework01
第一眼看到这个题目的时候就意识到这道题应该使用动态规划来解决,但因代码能力有限,因此从一维的问题开始解决,用C语言编写,代码如下:
int maxsum(int *p,int size){
int i;
int sum,ans;
sum=;
ans=-;
for(i=;i<size;i++){
if(sum+p[i]<p[i])
sum=;
sum+=p[i];
if(ans<sum)
ans=sum;
}
return ans;
}
p代表数组名字在C语言中即表示数组第一个元素所在的地址。一开始陷入的误区就是认为应该记录之前出现的和最大的字串的结束位置,后同学给予我提示即同时计算size-1个元素中包含最后一个元素的和最大的子串和和最大的子串。当包含最后一个元素的和最大的子串加上整个数组的最后一个元素的和大于原size-1的数字串的最大字串和的话我们就得到了一个更大的子串和,否则保留原来的子串和。 既然明白了一维的情况,那二维的情况就是讲二维转换为一维。即将n行m列的二维数组转换为n^2个长度为m的一维数组。代码如下:时间复杂度为O(m*n^2)
+int maxsum2(int *p,int m,int n){
+ int i,j,k;
+ int temp[m]={};
+ sum=;
+ ans=-;
+ for(i=;i<n;i++){
+ for(j=i;j<n;j++){
+ for(k=;k<m;k++){
+ temp[k]+=p[j][k];
+ if(sum+temp[k]<temp[k])
+ sum=;
+ sum+=temp[k];
+ if(ans<sum)
+ ans=sum;
+ }
+ sum=;
+ }
+ sum=;
+ temp[m]={};
+ }
+ return ans;
+}
因C语言处理输入过于繁琐,并且邹欣老师主张我们多会几门编程语言,因此在室友的激励下,我决定将本次的作业用python实现。
代码如下:
x=raw_input("row number\n")
y=raw_input("line number\n")
f=open(x+y+".txt","r")
num=[]
for i in range(int(x)):
for j in range(int(y)):
l=f.readline()
l=l.strip('\n').split(" ")
num.append(l)
def maxsum(num,y1,x1):
temp=[0]*x1
s=0
a=-1000000
for i in range(y1):
for j in range(i,y1):
for k in range(x1):
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]*x1
return a
print maxsum(num,int(x),int(y))
生成测试数据如下:
33 -78 158
-41 -31 283
189 -96 -13
-9 -152 277
最后结果为705
作业题目本身并不是很难,但是个人深刻的发现对除了C语言以外的编程语言仅仅是略懂皮毛,写出来的python代码也带有浓厚的C语言风格,并没有充分发挥出python开发效率高的特点,希望自己能够在此方面有所改进。
homework01的更多相关文章
- 最大连续子数组问题-homework-01
1)先写我的 github 的介绍: github 的域名:http://www.github.com/zhuifeng1022 登入 github 大概是下面的视图: 按照助教的方法:我已经建好了代 ...
- 现代程序设计——homework-01
1.我的GitHub用户 首先,接触到现代程序设计这门课之后我才正式开始使用GitHub和它的客户端,以前都是去网站看代码.扒样例.我注册的账户名为:hennande.目前该账户中有我的第一份关于ho ...
- 第一次作业(homework-01)成绩公布
已收到博客名.github名的同学得分列表: 学号后三位 成绩(0-10) 215 8082 0132 5184 5027 7194 9.5157 7074 8195 6222 8158 6128 8 ...
- 【现代程序设计】homework-01
HOMEWORK-01 1) 建立 GitHub 账户, 把课上做的 “最大子数组之和” 程序签入 已完成. 2) 在 cnblogs.com 建立自己的博客. 写博客介绍自己的 GitHub 账户. ...
- NS2网络模拟(5)-homework01.tcl
1: #NS2_有线部分\homework01.tcl 2: 3: #创建两个结点,深圳到北京的TCP连接,图形将数据显示出来,计算吞吐率,画图分析 4: #tcp上层用ftp 5: #udp上层用c ...
- homework-01
我的GitHub账户名是Firedamp. 其实我最一开始看到最大子序列的和这个题目,最先想到的就是最简单的O(n^3)的算法,在课堂上教的也确实是这个程序,但是这种算法的时间复杂度必然是最高的,在数 ...
- homework-01 "最大子数组之和"的解决过程
看到这个题目,我首先想到就是暴力解决 求出所有的子数组的和,取出最大值即可 但其中是可以有优化的 如 子数组[3:6]可以用[3:5]+[6]来计算 即可以将前面的计算结果保留下来,减少后面的重复计算 ...
- homework-01 "最大子数组之和"的问题求解过程
写在前面:我的算法能力很弱,并且也是第一次写博文,总之希望自己能在这次的课程中学到很多贴近实践的东西吧. 1.这次的程序是python写的,这也算是我第一次正正经经地拿python来写东西,结果上来说 ...
- My First Blog on cnblogs (现代程序设计 Homework-01)
Hello CNBLOGS!Hello Everyone! 这是我的第一篇blog,所以这也是一篇试验性的blog. 这个学期我和很多同学一样选修了邹欣老师的现代程序设计这门专业课.第一次看到使用Gi ...
- 对"一维最大子数组和"问题的思考(homework-01)
一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考题,在<编程之美>一书中同时阐述了一维数组和二维数组的讨论.本篇博客 ...
随机推荐
- Windows下如何使用BOOST C++库 .
Windows下如何使用BOOST C++库 我采用的是VC8.0和boost_1_35_0.自己重新编译boost当然可以,但是我使用了 http://www.boostpro.com/produc ...
- 文件结束符和C\C++读取文件方式
http://www.cnblogs.com/cvbnm/articles/2003056.html 约定编译器为 gcc2/x86: 所以 char, unsigned char 为 8 位, in ...
- Linux防火墙iptables简明教程
前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...
- Qt之QtSoap(访问WebService)
http://blog.csdn.net/u011012932/article/details/51673800
- Android EditText属性
1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 ( ...
- SQL Server常见问题总结
写在前面 在QQ群,微信群,论坛中经常帮助使用SQL Server数据库的朋友解决问题,但是有一些最常见最基本的问题,每天都有人问,回答多了也不想再解答了,索性把这些问题整理一下,再有人问到直接发链接 ...
- ISE综合后得到的RTL图如何与硬件对应起来,怎么知道每个element的功能
2013-06-23 21:34:03 要知道“我写的这段代码会综合成什么样的电路呢”,就要搞清楚RTL图中每个模块的功能,从而将代码与硬件对应,判断综合后的电路是否与预期的一致.如何做到? 之前查了 ...
- NFC(10)NDEF uri格式规范及读写示例(解析与封装ndef uri)
只有遵守NDEF uri 格式规范的数据才能写到nfc标签上. NDEF uri 格式规范 uri 只有两部分: 第1个字节是uri协议映射值,如:0x01 表示uri以 http://www.开头. ...
- Codeforces Round #228 (Div. 2) C. Fox and Box Accumulation(贪心)
题目:http://codeforces.com/contest/389/problem/C 题意:给n个箱子,给n个箱子所能承受的重量,每个箱子的重量为1: 很简单的贪心,比赛的时候没想出来.... ...
- Nhibernate与Dapper对比,及Nhibernate增删改和9种查询语法
1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH ...