首页 > 试题广场 >

代价

[编程题]代价
  • 热度指数: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
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] arr =new int[3];
        for (int i = 0; i < 3; i++) {
            arr[i]=scanner.nextInt();
        }
        Arrays.sort(arr);
        System.out.println(arr[2]-arr[0]);
    }
}

编辑于 2020-02-28 22:17:33 回复(1)

第一种:

1.按题目要求求附近两个数的绝对值

2.用两个较小的绝对值相加就得最小代价

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int A1=sc.nextInt();
        int A2=sc.nextInt();
        int A3=sc.nextInt();
        int B1,B2,B3;
        B1=Math.abs(A1-A2);
        B2=Math.abs(A2-A3);
        B3=Math.abs(A1-A3);
        int s;
        if(B1>=B2&&B1>=B3){
            s=B2+B3;
        }else if(B2>=B1&&B2>=B3){
            s=B1+B3;
        }else
        {
            s=B2+B1;
        }
        System.out.println(s);
    }
}

第二种:
1.判断数是否为中间的数

2.用最大的减去最小的得到最小代价

importjava.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        intA1=sc.nextInt();
        intA2=sc.nextInt();
        intA3=sc.nextInt();
    ints;
        if(A1>=A2&&A1=A3&&A1<=A2){
        s=Math.abs(A3-A2);
        }else if(A2>=A1&&A2=A3){
            s=Math.abs(A3-A1);
        }else
        {
            s=Math.abs(A1-A2);}
     System.out.println(s);
    }
}
编辑于 2019-09-19 21:00:10 回复(0)