数组乘积

输入两个数组,可以任意组合相乘,输出最大乘积

输入:

4

1 2 4 -1

4

7 6 -2 -3

输出:

43

#include <iostream>    
#include <algorithm>   
#include <cstring>     
using namespace std;   
const int maxn = 1001;
int up[maxn];
int down[maxn];
int main() 
{       int an=0;   //结果
	int n, m;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> up[i];
	cin >> m;
	for (int i = 0; i < m; i++)
		cin >> down[i];
	sort(up, up + n);
	sort(down, down + m);  //默认就是递增的,因此不需要cmp

	int i = 0, j=0;
	while (i < n && j < m && up[i] < 0 && down[j] < 0)
	{
		ans += up[i] * down[j];  //当前位置均小于0时
		i++;
		j++;
	}

	i = n - 1;//排序后,两个最大正数的位置
	j = m - 1;
	while (i >= 0 && j >= 0 && up[i]>0 && down[j]>0)
	{
		ans += up[i] * down[j];  //当前位置均大于0时
		i--;
		j--;
	}
	cout << ans << endl;
	return 0;
} 

  

posted @ 2018-08-05 18:09  道微真理  阅读(575)  评论(0)    收藏  举报