连续子数组的最大乘积、最小乘积

#include <stdio.h>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	int a[10];
	int n;
	
	cin >> n;
	for(int i = 0; i < n; ++i)
	{
		cin >> a[i];
	}
	
	int cur_max = a[0], cur_min = a[0], last_min = a[0], last_max = a[0], result_max = a[0], result_min = a[0];
	for(int i = 1; i < n; ++i)
	{
		cur_max = max(max(a[i]*last_max, a[i]*last_min), a[i]);
		cur_min = min(min(a[i]*last_max, a[i]*last_min), a[i]);
		result_max = max(cur_max, result_max);
		result_min = min(cur_min, result_min);
		last_max = cur_max;
		last_min = cur_min;
	}
	
	cout << result_min << " " << result_max << endl;;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/breeze_blows/article/details/80154394