[C/C++]代价 2019校招编程刷题
参考链接
题目描述
你有3个需要完成的任务,完成这3个任务是需要付出代价的。
首先,你可以不花任何代价的完成一个任务;然后,在完成了第i个任务之后,你可以花费|Ai - Aj|的代价完成第j个任务。|x|代表x的绝对值。
计算出完成所有任务的最小代价。
输入描述
一行3个整数A1,A2,A3,每个数字之间用一个空格分隔。所有数字都是整数,并且在[1,100]范围内。
输出描述
一个整数,代表最小的代价。
输入例子1:
1 6 3
输出例子1:
5
输入例子2:
10 10 10
输出例子2:
0
思路:
- 一共输入三个数,想要代价最小,应该执行如下策略:
- 第一步:给这三个数字排序,排序后的结果记为min,mid,max。 其实只要找到最大值和最小值就可以。
- 第一步:代价最大的任务第一个输入,这样完成的代价为0。
- 第二步:完成mid的任务,现在的代价是 0 + max - mid = max - mid。
- 第三步:完成min的任务,现在的代价就是 max - mid + (mid - min) = max - min
- 输出结果 max - min 即可。
“just show my code”
代码(c++/c)
#include<iostream>
using namespace std;
int main(){
int a,b,c; // 三个任务代价
cin >> a >> b >> c;
int cost ;//完成任务代价之和
// c为最大值
if (a > b){
swap(a,b);
}
if (b > c){
swap(b ,c);
}
if (a > c) {
swap(a , c);
}
// a为最小值
if (a > b){
swap(a,b);
}
if (b > c){
swap(b ,c);
}
if (a > c) {
swap(a , c);
}
cost = c - a;
cout<<cost<<endl;
return 0;
}
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!