Étant donné trois nombres entiers, le problème de trouver combien d'opérations sont nécessaires pour faire le même nombre selon les deux méthodes. Je ne pouvais pas comprendre l'explication de la réponse modèle même après l'avoir lue, alors je l'ai résolue avec ma propre solution.
Mettez trois nombres dans un tableau et triez-les par ordre croissant. Exemple) 4,8,5 Avec la méthode Arrays.sort Il change de l'ordre de 4, 5, 8. Alors que array [0] <array [1], augmentez le tableau [0] de +2. Lorsque tableau [0] == tableau [1], tableau [0] ++, tableau [1] ++. Revenez également au début de l'instruction while et exécutez la méthode Array.sort. Dans le cas de cet exemple le tableau [0] est incrémenté de +2 à 6,5,8, Selon la méthode, la commande est de 5,6,8. Une solution peut être obtenue en répétant cela plusieurs fois. Cependant, je ne peux pas prouver pourquoi cette méthode est la plus courte, donc si quelqu'un le sait, veuillez la laisser dans les commentaires.
import java.util.Arrays; import java.util.Scanner; public class Main{
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int [] array = new int[3];
array[0] = stdIn.nextInt();
array[1] = stdIn.nextInt();
array[2] = stdIn.nextInt();
int cnt = 0;
while(true) {
Arrays.sort(array);
if(array[0] == array[1] && array[1] == array[2]) {
break;
}
if(array[0]<array[1]) {
cnt++;
array[0] += 2;
continue;
}
if(array[0] == array[1]) {
cnt++;
array[0]++;
array[1]++;
}
}
System.out.println(cnt);
}
}
Recommended Posts