zoukankan      html  css  js  c++  java
  • 软件工程第三次作业

    题目(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。
    -- 引用自《百度百科

    [coding地址](https://dev.tencent.com/u/zhoucysw)<-----代码在这里_;


    算法设计以及实现过程:


    • 算法设计描述:在输入数组以及数组个数之后,定义了数组和与最大子段和都为0,循环计算,如果数组和大于最大子段和,就把数组和赋值给最大子段和,反之,最大子段和不变。

    • 流程图:

    • 源代码:

      #include<iostream>
      using namespace std;
      int max(int a[], int n)
      {
      	int maxsum,sum = maxsum = 0;
      	int i;
      	for (i = 0; i < n; i++)
      	{
      		sum += a[i];
      		if (sum > maxsum)
      			maxsum = sum;
      		else if (sum < 0)
      			sum = 0;
      	}
      	return maxsum;
      }
      int main()
      {
      	int i, n;
      	int num[100];
      	cin >> n;
      	for (i = 0; i < n; i++) {
      		cin >> num[i];
      	}
      	int maxsum = max(num, n);
      	cout << maxsum<< endl;
      	system("pause");
      }
      
    • 源代码编译:

    • 测试代码:

      #include "stdafx.h"
      #include "CppUnitTest.h"
      #include"..work31.h"
      
      using namespace Microsoft::VisualStudio::CppUnitTestFramework;
      
      namespace UnitTest3
      {		
      	TEST_CLASS(UnitTest1)
      	{
      	public:
      
      		TEST_METHOD(TestMethod1)
      		{
      			int a[] = { 2,11,4,13,5,-2 };
      			int b = max(a, 6);
      			Assert::AreEqual(33, b);
      			// TODO: 在此输入测试代码
      		}
      	
      	};
      }
      
    • 测试代码编译:

    • 条件判定测试:

      1. 数组为空:当数组为空时,最大子段和应该为0;

      2. 数组全为负数:当数组全为负数时,最大子段和为0;

      3. 数组全为正数:当数组全为正数时,最大子段和为数组和;

      4. sum>maxsum:当数组和大于最大子段和时,最大子段和等于数组和;

      5. sum<maxsum:当数组和小于最大子段和时,最大子段和保持不变;


    • 总结:在这次的个人作业中,是一个完整的代码实现过程,在测试代码的过程中用到了单元测试,经过上一次的练习,这次再使用起来得心应手多了。单元测试是一个软件测试必经之路,虽然这次测试的代码不算很难,测试起来很容易覆盖到,但是这是一个培养思维方式的过程,相信经过不断强化的练习,会慢慢的积累不少的经验。
  • 相关阅读:
    将C#文档注释生成.chm帮助文档
    Gacutil.exe(全局程序集缓存工具)
    虚拟分区安装
    ListView控件绑定DataSet
    DataSet之增删改查操作(DataGridView绑定)
    Win8系统如何关闭用户账户控制UAC
    win8系统 重装系统如何删除EFI分区
    win8系统 如何默认显示文件扩展名和显示隐藏文件
    win8系统 如何不显示这台电脑的文件夹
    Win7 本地打印后台处理程序服务没有运 怎么办
  • 原文地址:https://www.cnblogs.com/zhoucysw/p/10732276.html
Copyright © 2011-2022 走看看