基于visual Studio2013解决面试题之0204最大子集数组




题目



解决代码及点评

/*
	在一个数组里n0, n1,n2...nk中,定义(0< i,j < n)可以得到一个子集数组
	求和最大的子集数组

	解决思路:
	1)遍历数组,进行累加
	2)每次累加的值和当前max做判断,如果大于max,则取代max
	3)每次累加的值和0比较,如果<0,则放弃累加值清0
*/


#include <iostream>

using namespace std;


int main()
{
	int a[10]={1, -2, 3, 10, -4, 7, 2, -5, -1, -2};
	int max=0;
	int sum=0;
	// 通过循环遍历数组
	for (int i=0;i<10;i++)
	{
		// 判断当前累加值跟当前坐标指示的值相加结果,如果<0,则讲累加值清0
		if(sum+a[i]<0)
			sum=0;
		else 
			sum+=a[i];      // 如果不是<0,则做一次累加

		// 累加完之后,跟当前的max比较,如果比max大,则置换max
		if (sum>max)
		{
			max=sum;
		}
	}

	//输出max值
	cout<<max;

	system("pause");
	return 0;
}



代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果









你可能感兴趣的:(基于visual Studio2013解决面试题之0204最大子集数组)