首页 > 代码库 > 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安装与单元测试以及经过优化的算法