数组乘积
输入两个数组,可以任意组合相乘,输出最大乘积
输入:
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;
}
浙公网安备 33010602011771号