site officiel de paiza Un endroit où vous écrivez un programme, le classez et l'évaluez Vous pouvez faire appel à votre capacité de programmation à l'entreprise que vous recherchez (Je ne pense pas que ce soit pratique, mais si vous le résolvez correctement, vous pouvez voir qu'il a la capacité minimale.)
Problème: Comment sortir de Janken ・ Nombre total de jeux N ・ Indice total M ・ Rangée S de la main de l'adversaire 3 sont donnés comme entrées, et le problème de la détermination du nombre maximum de victoires contre la main de l'adversaire lorsque le nombre total de jeux et l'indice total sont utilisés exactement Pour plus de détails, cliquez sur
import java.util.ArrayList;
import java.util.Scanner;
/**
*Comment sortir les mains de Janken(équivalent à paiza rang A)
*/
public class AS001{
public static void main(String[] args) {
//contribution
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
char[] handArray = sc.next().toCharArray();
//Analyse de la main de l'adversaire
int[] handCount = new int[3]; //{G, C, P}
for(char hand : handArray) {
switch(hand) {
case 'G':
handCount[0]++;
break;
case 'C':
handCount[1]++;
break;
case 'P':
handCount[2]++;
break;
}//switch
}//for
//Énumération des modèles de main
ArrayList<Integer[]> patternList = new ArrayList<>(100);
for(int i = 0; i <= n; i++) {
for(int j = 0; j <= n; j++) {
int yubi = i * 2 + j * 5; //indice
int remain = n - i - j; //Nombre de parties restantes
if(yubi == m && remain >= 0) {
//Combinaison qui utilise les doigts dans le nombre total de jeux
Integer[] pattern = {remain, i, j}; //{g, c, p}
patternList.add(pattern);
}else if(yubi > m || remain < 0) {
//Si le nombre de jeux est épuisé ou que l'indice est dépassé, la boucle suivante
break;
}//if
}//for
}//for
//Calculez le modèle de gains maximum
int maxWin = 0;
for(Integer[] pattern : patternList) {
int win = 0;
win += Math.min(handCount[0], pattern[2]); //L'autre partie est goo, je suis par
win += Math.min(handCount[2], pattern[1]); //L'autre partie est normale, je suis choki
win += Math.min(handCount[1], pattern[0]); //L'autre partie est choki, je suis goo
if(win > maxWin) maxWin = win;
}//for
//production
System.out.println(maxWin);
}//main
}//class
Tout le temps d'exécution est de 0,10 seconde
Recommended Posts