首页 > 试题广场 >

代价

[编程题]代价
  • 热度指数:5997 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
你有3个需要完成的任务,完成这3个任务是需要付出代价的。
首先,你可以不花任何代价的完成一个任务;然后,在完成了第i个任务之后,你可以花费|Ai - Aj|的代价完成第j个任务。|x|代表x的绝对值。
计算出完成所有任务的最小代价。

输入描述:
一行3个整数A1,A2,A3,每个数字之间用一个空格分隔。所有数字都是整数,并且在[1,100]范围内。


输出描述:
一个整数,代表最小的代价。
示例1

输入

1 6 3

输出

5
示例2

输入

10 10 10

输出

0
#include <stdio.h>
#include <stdlib.h>

int main() {
    int A[3];
    int i, j, k, cost, min_cost = 1000000;

    // 输入三个数
    for (i = 0; i < 3; i++) {
        scanf("%d", &A[i]);
    }

    // 枚举三个任务的完成情况,并计算总代价
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3; j++) {
            if (i == j) continue; // 任务不能重复完成
            for (k = 0; k < 3; k++) {
                if (i == k || j == k) continue; // 任务不能重复完成
                // 计算总代价
                cost = abs(A[i] - A[j]) + abs(A[j] - A[k]);
                if (cost < min_cost) {
                    min_cost = cost;
                }
            }
        }
    }

    // 输出最小代价
    printf("%d\n", min_cost);

    return 0;
}

发表于 2023-05-09 22:24:07 回复(0)