软件工程(2019)第三次个人作业

wmmmmy 2021-08-29 原文


软件工程(2019)第三次个人作业

1.题目要求

问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。
— 引用自《百度百科

2.程序设计

程序设计采用递推法实现,每当数组中有一个新的数据进入,判断其正负,因加负数max值肯定不变,当加入正数时可能使max变大,当加入新数据使最大字段和为负数时重新计算字段和,最终得到其中最大字段和。源代码如下

#include <stdlib.h>
#include <stdio.h>
#include <iostream>

using namespace std;
int arr[100],test[100];
int num,max;
int maxfun(int arr[],int num)
{
	int max;
	test[0]=arr[0];
	max = test[0];
	for (int i = 1; i < num; i++)
	{
		if (test[i - 1] > 0)
			test[i] = test[i - 1] + arr[i];
		else
			test[i] = arr[i];
		if (test[i] > max)
			max = test[i];
	}
	if (max < 0)
		max = 0;
	return max;
}

int main()
{
	int i;
	int max;
	cin >> num;
	for (i = 0; i < num; i++)
	{
		cin >> arr[i];
	}
	max = maxfun(arr, num);
	printf("%d\n", max);
	return 0;
}

maxfun函数流程图如下

3程序测试

对于本程序采用判定/条件覆盖

程序中共有三个判断条件

序号 条件
1 test[i-1]>0或test[i-1]>=0
2 test[i]>max或test[i]<=max
3 max>0或max<=0

测试样例如下

序号 测试样例 预期结果
1 (-2,11,-4,13,-5,-2) 20
2 (-2) 0

测试代码如下

#include "stdafx.h"
#include "CppUnitTest.h"
#include "../求最大字段和/标头.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{	
	int arr1[] = { -2, 11, -4, 13, -21, -2 };
	int arr2[] = { -2 };
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
		
			Assert::AreEqual(maxfun(arr1, 6), 20);
			
		}
		TEST_METHOD(TestMethod2)
		{
			Assert::AreEqual(maxfun(arr2, 1), 0);
		}

	};
}

测试结果如下

coding地址

发表于
2019-04-21 21:10 
wmmmmy 
阅读(77
评论(0
编辑 
收藏 
举报

 

版权声明:本文为wmmmmy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wmmmmy/p/10746753.html

软件工程(2019)第三次个人作业的更多相关文章

  1. 经典游戏软件工程案例分享–最终幻想14的毁灭与重生(三)完结

    不得不说重制一个玩家还在玩的游戏是个冒险的决定,先聊一聊非常重要但是讨论比较少的事情–项目管理 首 […]...

  2. g4e基础篇#3 Git安装与配置

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标 […]...

  3. GitHub和75亿美金

    如果你是看到了75亿进来的,还在纳闷前面那个github的是个什么,你可以走人了?如果你进来是想看到微软两个字 […]...

  4. 17秋 软件工程 第二次作业 sudoku

    2017年秋季 软件工程 作业2:个人项目 sudoku Github Project Github Proj […]...

  5. 深入浅出:HTTP/2

    上篇文章深入浅出:5G和HTTP里给自己挖了一根深坑,说是要写一篇关于HTTP/2的文章,今天来还账了。 本文 […]...

  6. 软件工程(2019)第一次作业

    软件工程(2019)第一次作业 (1) 回顾你过去将近3年的学习经历 当初你报考的时候,是真正喜欢计算机这个专 […]...

  7. sau交流学习社区第三方登陆github–oauth来实现用户登录

    sau交流学习社区第三方登陆github–oauth来实现用户登录 最近在丰富nodejsBlog […]...

  8. 计算机科学、软件工程、信息工程专业!计算机专业该如何选择!

    这些专业都是偏理工类的硬核专业! 我专门在北京、上海、成都的高校,组织过针对信息管理系统类专业的项目,因此,从 […]...

随机推荐

  1. [推荐]MyBatis 核心技术与面试 34 讲

    MyBatis 核心技术与面试 34 讲 职业生涯中常被问到: 如何成为某方面的高手? 如何快速搞定某项技术? […]...

  2. 稳定婚姻问题

    假如你是一个快看小说网媒人,有若干个单身男子登门求助,还有同样多的烈火军校单身女子也前来征婚。如果你已经知道这 […]...

  3. three.js各种材质的实现源码

    three.js常用材质:基本材质、兰伯特材质、冯氏材质、标准材质。 我们可以自己使用着色器实现这些材质,用于 […]...

  4. 聊聊GIS中那些坐标系

    就是要讲GIS里的坐标系! 转载请声明到标题。 B站/博客园/CSDN/知乎:@秋意正寒 很开心能跃居百度关键 […]...

  5. MAVEN打包时没有将src/main/cache文件夹打到到WAR包中

    某项目中ehcache配置文件写在src/main/cache中,结果用maven打包时,得到的WAR包里面没 […]...

  6. 【Java基础】——JSP九个内置对象

    何为JSP?    要解释JSP的九个内置对象,必须先要搞懂何为JSP?JSP全称Java Service P […]...

  7. 微服务架构中的Redis

    微服务架构中的Redis 了解如何将Redis与Spring Cloud和Spring Data一起使用以提供 […]...

  8. jQuery中的Ajax几种请求方法[转]

    转自:http://blog.csdn.net/killerggf/article/details/56198 […]...

展开目录

目录导航