动态规划:求最大子段和

动态规划:求最大子段和

1、题目

动态规划:求最大子段和_第1张图片


2、方法

动态规划:求最大子段和_第2张图片


3、实现代码

//动态规划法求最大子段和 
// by 孙琨SealSun at UCAS 
// 2015.11.20 

#include
using namespace std;
#define MAX 256

// 算法 
void MaxSum(int n,int *a){
	int sum = 0; // 最大子段和 
	int b = 0; // 局部子段和 
	int start = 0; // 最大子段起始处 
	int end = 0; // 最大子段终止处 
	for(int i=1; i<=n; i++){ // 一直相加,直到和不为正数,当前值取代 
		if(b>0){  
			b += a[i]; 
		//	end = i;
		}
		else{
			b = a[i];
			start = i; 
		}
		
		if(b>sum){
			sum = b;
			end = i;
		}
	}
	
	cout << "最大子段和为:"<> n;
	cout << "请依次输入每一个数:" <> a[i];
	}
	MaxSum(n,a);
	return 0;
} 


4、测试结果截图

动态规划:求最大子段和_第3张图片

你可能感兴趣的:(算法)