题目内容:输入三个整数x,y,z,求得对其操作的最少次数使得三个数全部相等,可执行的两个操作是:
(1)从xyz中选择两个都加1;
(2)从xyz中选择一个加2;
Java解题:思路很简单,比较直接也比较笨的方法吧。先将三个数进行从小到大排序,计算最大的数与另外两个数的差,可以分成三种情况。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner str=new Scanner(System.in);
int[] a=new int[3];
a[0]=str.nextInt();
a[1]=str.nextInt();
a[2]=str.nextInt();
Arrays.sort(a);
int count=0;
if((a[2]-a[0])%2==0 && (a[2]-a[1])%2==0) {
count=(a[2]-a[0])/2+(a[2]-a[1])/2;
}
else if((a[2]-a[0])%2!=0 && (a[2]-a[1])%2!=0) {
count=(a[2]-a[0])<(a[2]-a[1])?(a[2]-a[0]):(a[2]-a[1])+(a[1]-a[0])/2;
}
else {
int b1=a[2]-a[0];int b2=a[2]-a[1];
count=1+b2+(b1+1-b2)/2;
}
System.out.println(count);
}
}