题目要求找出四个整数A、B、C、D的组合,使得等式(□-□)*(□+□)的结果最大。我们可以通过穷举法来解决这个问题。

首先,我们可以将等式(□-□)*(□+□)进行展开,得到(□^2-□^2)。由于我们要求最大值,那么最大值只可能出现在两种情况下:

  1. A和B都是正数,C和D都是负数。此时,(□-□)的结果最大,(□+□)的结果最小,所以结果最大。
  2. A和B都是负数,C和D都是正数。此时,(□-□)的结果最小,(□+□)的结果最大,所以结果最大。

因此,我们可以将问题转化为找出A、B、C、D中最大的两个数和最小的两个数。

具体算法如下:

  1. 读入A、B、C、D四个整数。
  2. 将A、B、C、D排序,得到有序数组arr。
  3. 计算arr[2] - arr[1]并将结果赋给diff1。
  4. 计算arr[3] - arr[0]并将结果赋给diff2。
  5. 比较diff1和diff2的大小,较大的值即为最大结果。

代码实现如下:

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int A, B, C, D;
    cin >> A >> B >> C >> D;

    int arr[4] = {A, B, C, D};
    sort(arr, arr + 4);

    int diff1 = arr[2] - arr[1];
    int diff2 = arr[3] - arr[0];

    int result = max(diff1, diff2);

    cout << result << endl;

    return 0;
}

时间复杂度分析:排序的时间复杂度为O(nlogn),其中n为数组的长度,其他操作的时间复杂度都为O(1)。所以总的时间复杂度为O(nlogn)

cpp题目描述小秦同学有四个整数 ����ABCD。和一个等式□-□□+□。他想将 ����ABCD 填入□ 中使等式最大每个数用且只用一次。求出合法等式的最大值是多少?输入格式一行四个整数 ����ABCD。输出格式表示最大的答案。输入输出样例样例 1输入样例 复制2 2 2 2输出样例 复制0样例 2输入样例 复制2 3 -5 -2输出样例 复制15数据范围与提示对于 100100 的数据−1

原文地址: http://www.cveoy.top/t/topic/ixIi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录