offizielle Website von Paiza Ein Ort, an dem Sie ein Programm schreiben, es bewerten und bewerten Sie können Ihre Programmierkenntnisse an das Unternehmen richten, das Sie suchen (Ich denke nicht, dass es praktisch ist, aber wenn Sie es richtig lösen, können Sie sehen, dass es die minimale Fähigkeit hat.)
Problem: Wie man aus Janken rauskommt ・ Gesamtzahl der Spiele N. ・ Gesamtindex M. ・ Handreihe des Gegners S. 3 werden als Eingaben angegeben, und das Problem der Bestimmung der maximalen Anzahl von Gewinnen gegen die Hand des Gegners, wenn die Gesamtzahl der Spiele und der Gesamtindex genau verwendet werden Weitere Informationen finden Sie unter
import java.util.ArrayList;
import java.util.Scanner;
/**
*Wie man die Hände von Janken ausstreckt(äquivalent zu Paiza Rang A.)
*/
public class AS001{
public static void main(String[] args) {
//Eingang
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
char[] handArray = sc.next().toCharArray();
//Analyse der gegnerischen Hand
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
//Handmusteraufzählung
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; //Index
int remain = n - i - j; //Anzahl der verbleibenden Spiele
if(yubi == m && remain >= 0) {
//Kombination, die Finger innerhalb der Gesamtzahl der Spiele verbraucht
Integer[] pattern = {remain, i, j}; //{g, c, p}
patternList.add(pattern);
}else if(yubi > m || remain < 0) {
//Wenn die Anzahl der Spiele aufgebraucht ist oder der Index überschritten wird, wird die nächste Schleife ausgeführt
break;
}//if
}//for
}//for
//Berechnen Sie das Muster der maximalen Gewinne
int maxWin = 0;
for(Integer[] pattern : patternList) {
int win = 0;
win += Math.min(handCount[0], pattern[2]); //Die andere Partei ist goo, ich bin par
win += Math.min(handCount[2], pattern[1]); //Die andere Partei ist par, ich bin Choki
win += Math.min(handCount[1], pattern[0]); //Die andere Partei ist Choki, ich bin goo
if(win > maxWin) maxWin = win;
}//for
//Ausgabe
System.out.println(maxWin);
}//main
}//class
Die gesamte Ausführungszeit beträgt 0,10 Sekunden
Recommended Posts