首页 > 代码库 > vs2015安装与单元测试以及经过优化的算法

vs2015安装与单元测试以及经过优化的算法

vs作为现在流行的主流编程软件,我接下来将会以vs2015为例,介绍vs2015的安装方法。

1.从Microsoft官网上或从网上下载vs2015安装镜像。

2.运行下载文件后,根据提示完成安装。

但是需要注意,出现线面弹框的时候,要选择自己需要的语言,不要选择自己不需要的语言,因为那样会让安装时间过长。

技术分享

3.接下来我将演示如何创建一个cpp文件。

技术分享首先运行vs2015后,会出现上面界面。

技术分享

选择新建项目,选择Win32控制台应用程序。

技术分享技术分享

在这里我是建议大家将附加选项中除了空项目之外,全部点掉的。技术分享

在这里选择源文件,右击创建新项目。

技术分享

选择c++文件。

技术分享

然后大家就可以在这里编程了。

--------------------------------------------------------------------------这里是可爱的分界线-----------------------------------------------------------------------------------------

接下来我将为大家介绍求数组的子数组之和的最大值算法。

看到这个题目我感到很亲切,因为我本身是做acm的,所以对这个题很熟悉。

开始我和大家一样,或许第一印象就是使用暴力求解的方法,(- -当然你们也可能比我聪明直接想出了更简便的算法)。

这里我要向大家介绍一个源自邹欣老师编写的的《编程之美》中的一个算法,当然我只是在时间上进行了相对的节约,并没有对空间上进行节约,如果愿意,这也是完全可以的。

如果同学们才用暴力求解,会发现将程序的时间复杂度将是O(n*n),这在n很小是还可以,可是当n大到一定程度是,这个复杂度是相当恐怖的。

好了不bb了,我将介绍一下这个的算法,除了需要储存数据的a数组,我将而外开取两个数组,一个是now数组,一个是all数组。now[i]数组用来储存到第i个数时,一定加上a[i]的最大值,而all[i]数组则表示到第i个数时的最大值。

这里根据动态规划,不难得出下面两个递推公式。

now[i]=max(a[i],now[i-1]+a[i]);

all[i]=max(now[i],all[i-1]);

我采取了《编程之美》上那种从数组后面向前递推的方法,当然正面递推也是正确的。

这是我代码地址:https://git.coding.net/Sm1leJokinger/shuzu.git

下面我将贴上我单元测试的结果。

用例编号

用例描述

输入数据

预期输出数据

实际输出数据

通过/不通过

评价

 

1

最大子数和为部分数组

0,1,2-5,4,5 

9

9

通过

结果正确

2

最大子数和为整个数组

0,1,2,-1,10,5

17

17

通过

结果正确

3

全部为0

0,0,0,0,0,0

0

0

通过

结果正确

4

最大子数和为最小负数

-1,-1,-2,-5,-4,-5

-1

-1

通过

结果正确

5

包含0的正数

0,1,2,3,4,5

15

15

通过

结果正确

技术分享

vs2015安装与单元测试以及经过优化的算法