1)先写我的 github 的介绍:

github 的域名:http://www.github.com/zhuifeng1022

登入 github 大概是下面的视图:

按照助教的方法:我已经建好了代码仓库:命名为 homework-01

代码仓库 homework-01 域名: http://www.github.com/zhuifeng1022/homework-01

2)我选择的教材:中文版 代码大全 (第二版) 斯蒂夫·迈克康奈尔

以下是第一次作业:

  我在课上想到的一种算法设计:

#include<stdio.h>
int max(int *a, int n)
{
int i, j;
int high, low;
int max, sum;
for (i = , max = ; i < n; i++)
max = max + a[i];
sum=;
for (i = ; i < n; i++)
{
for(j = ;j < n; j++)
{
for(sum = , low = i, high = j; low <= high; low++)
{
sum = sum + a[low];
if(sum > max)
max = sum;
}
}
}
return max;
} int main()
{
int a[];
int i, n;
FILE *in;
in = fopen("data.in", "r");
fscanf(in, "%d", &n);
for (i = ; i < n; i++)
fscanf(in, "%d", &a[i]);
printf("%d\n", max(a, n));
fclose(in);
return ; }

课后经过和同学的讨论,我又实现了另外一种O(n)的算法:

#include<stdio.h>
int max(int *a, int n)
{
int i;
int max, sum;
for (i = ; i < n; i++)
{
if (a[i] < max)
max = a[i];
}
sum = ;
for (i = ; i < n; i++)
{
sum += a[i];
if(sum > max)
max = sum;
if (sum < )
sum = ;
}
return max;
} int main()
{
int a[];
int i, n;
FILE *in;
in = fopen("data.in", "r");
fscanf(in, "%d", &n);
for (i = ; i < n; i++)
fscanf(in, "%d", &a[i]);
printf("%d\n", max(a, n));
fclose(in);
}

最大连续子数组问题-homework-01的更多相关文章

  1. Demo003 最大连续子数组问题(《算法导论》4.1-5)

    问题 问题描述  给定n个整数(可能为负数)组成的数组,要求一个数组连续下标和的最大值,数组的元素可正.可负.可为零.  数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的 ...

  2. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

  3. lintcode循环数组之连续子数组求和

    v 题目:连续子数组求和 II 给定一个整数循环数组(头尾相接),请找出一个连续的子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.如果多个答案,请返回其中任意一个. ...

  4. 剑指Offer 连续子数组的最大和

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  5. 剑指offer面试题31连续子数组的最大和

    一.题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果 ...

  6. lintcode :continuous subarray sum 连续子数组之和

    题目 连续子数组求和 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.(如果两个相同的答案,请返回其中任意一个) 样例 给定 [-3, ...

  7. 最大连续子数组问题2-homework-02

    1) 一维数组最大连续子数组 如第homework-01就是一维数组的最大子数组,而当其首位相接时,只需多考虑子数组穿过相接的那个数就行了! 2)二维数组 算法应该和第一次的相似,或者说是将二维转化为 ...

  8. 编程算法 - 连续子数组的最大和 代码(C)

    连续子数组的最大和 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个整型数组, 数组里有正数也有负数. 数组中一个或连续的多个整数组成一 ...

  9. 【剑指offer】连续子数组的最大和

    个開始,到第3个为止).你会不会被他忽悠住? 输入: 输入有多组数据,每组測试数据包括两行. 第一行为一个整数n(0<=n<=100000),当n=0时,输入结束.接下去的一行包括n个整数 ...

  10. 找一个数组的最大和的连续子数组(时间复杂度 O(n))(二)

    要求: 要求数组从文件读取. 如果输入的数组很大,  并且有很多大的数字,  就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出. 另外, 如果输入文件的参数有错误, 这个程序应该 ...

随机推荐

  1. linux kernel启动流程

    linux kernel启动是从./init/main.c中开始的,其大概流程是: 1. 调用start_kernel()函数: 2. start_kernel()调用rest_init()函数: 3 ...

  2. WIN32编程杂记(一)

    1.UNREFERENCED_PARAMETER的用处 作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命 ...

  3. Java中静态代码块,代码块,构造方法优先级、区别及代码示例

    在项目中遇到了代码块的知识点,跑了下测试,写下结论 代码优先级:静态代码块 -> 构造代码块 -> 构造方法 多个代码块优先级,按照“先定义的代码先执行,后定义的代码后执行”原则执行 静态 ...

  4. AVL的旋转

    转自http://blog.csdn.net/gabriel1026/article/details/6311339 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树 ...

  5. PL/SQL Developer自动补全SQL技巧

    s = SELECT t.* FROM t w = WHERE b = BETWEEN AND l = LIKE '%%' o = ORDER BY insw = IN (SELECT a FROM ...

  6. POJ 2455 - Secret Milking Machine

    原题地址:http://poj.org/problem?id=2455 题目大意:给出一个N个点的无向图,中间有P条边,要求找出从1到n的T条通路,满足它们之间没有公共边,并使得这些通路中经过的最长的 ...

  7. word编辑器解码集合

    $(document).ready(function () { $(".content").each(function () { var content = $(this).htm ...

  8. UVa 11997 (优先队列 多路归并) K Smallest Sums

    考虑一个简单的问题,两个长度为n的有序数组A和B,从每个数组中各选出一个数相加,共n2中情况,求最小的n个数. 将这n2个数拆成n个有序表: A1+B1≤A1+B2≤... A2+B1≤A2+B2≤. ...

  9. BZOJ2111: [ZJOI2010]Perm 排列计数

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意:一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2< ...

  10. sql 游标循环当中重新赋值

    sql 游标循环当中的变量必须重新赋值不然变量的值就是前次循环的值