[JAVA] ABC --025 --A & B & C

AtCoder ABC 025 A&B&C AtCoder - 025

Un problème

	private void solveA() {
		char[] wk = next().toCharArray();
		int n = nextInt();

		int cnt = 0;
		for (int i = 0; i < wk.length; i++) {
			for (int j = 0; j < wk.length; j++) {
				cnt++;
				if (n == cnt) {
					out.println((char) wk[i] + "" + (char) wk[j]);
					return;
				}
			}
		}

	}

Problème B

Hmmm. Stream semble n'avoir aucun mérite même s'il est utilisé dans un tel endroit.

	private void solveB() {
		int n = nextInt();
		int a = nextInt();
		int b = nextInt();
		long res = 0;

		res = IntStream.range(0, n).reduce(0, (sum, i) -> {
			String direction = next();
			int meter = nextInt();
			long move = meter < a ? a : meter > b ? b : meter;
			switch (direction) {
			case "East":
				sum -= move;
				break;
			case "West":
				sum += move;
				break;
			default:
				throw new IllegalArgumentException();
			}
			return sum;
		});
		//--------------------------------------------------------
		//		String[] direction = new String[n];
		//		int[] meter = new int[n];
		//
		//		for (int i = 0; i < n; i++) {
		//			direction[i] = next();
		//			meter[i] = nextInt();
		//			long move = meter[i] < a ? a : meter[i] > b ? b : meter[i];
		//			switch (direction[i]) {
		//			case "East":
		//				res -= move;
		//				break;
		//			case "West":
		//				res += move;
		//				break;
		//			default:
		//				throw new IllegalArgumentException();
		//			}
		//		}
		//--------------------------------------------------------

		out.println(res == 0 ? 0 : res > 0 ? "West " + res : "East " + res * -1);
	}

Problème C

――Dans l'explication, ça a commencé à partir du virage = 9, mais il y avait une partie que je ne pouvais pas rattraper, alors j'ai décidé de comparer tous les points lorsque j'ai mis les pierres dans l'ordre du virage = 1 ( En conséquence, on l'appelle une fonction récursive 623530 fois) ――Je veux mettre les deux au meilleur endroit, donc j'adopterai le score maximum à ce tour

	private void solveC() {
		int[][] b = new int[2][3];
		for (int i = 0; i < 2; i++) {
			for (int j = 0; j < 3; j++) {
				b[i][j] = nextInt();
			}
		}
		int[][] c = new int[3][2];
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 2; j++) {
				c[i][j] = nextInt();
			}
		}

		/*
		 *L'une ou l'autre pierre a déjà été placée, personne ne l'a encore placée
		 *Afin d'exprimer[][]utilisation
		 *Si c'est 0, personne n'est mis
		 * boolean[][]Mais vous pouvez, mais pour le débogage 1/-Je voulais voir 1
		 */
		int[] res = calcPointC(b, c, new int[3][3], 0, true);

		out.println(res[0]);
		out.println(res[1]);
	}

	//	int cnt = 1;

	/**
	 *Enquête récursive
	 * @param b
	 * @param c
	 * @param board
	 * @param turn
	 * @param who
	 * @return
	 */
	private int[] calcPointC(int[][] b, int[][] c, int[][] board, int turn, boolean who) {
		if (turn == 9) {
			int chokudai = 0;
			int chokuko = 0;
			/*
			 *J'ai fini de tout mettre, alors j'ai commencé à calculer
			 */
			for (int i = 0; i < 3; i++) {
				for (int j = 0; j < 3; j++) {
					if (i < 2) {
						if (board[i][j] == board[i + 1][j]) {
							chokudai += b[i][j];
						} else {
							chokuko += b[i][j];
						}
					}
					if (j < 2) {
						if (board[i][j] == board[i][j + 1]) {
							chokudai += c[i][j];
						} else {
							chokuko += c[i][j];
						}
					}
				}
			}
			return new int[] { chokudai, chokuko };

		}

		List<int[]> resList = new ArrayList<int[]>();
		/*
		 *Découvrez le score maximum au tour de qui
		 *Le score lorsque le score maximum de celui qui fait le mieux
		 */
		for (int i = 0; i < 3; ++i) {
			for (int j = 0; j < 3; ++j) {
				//				if (i == 0 && j == 0) {
				//					out.println(cnt++);
				//				}
				/*
				 *Déjà placé
				 */
				if (board[i][j] != 0) {
					continue;
				}

				if (who) {
					board[i][j] = 1;
				} else {
					board[i][j] = -1;
				}
				/*
				 *qui est au tour
				 *Pour le moment, enregistrez le nombre de points que vous obtiendrez si vous le mettez dans cette position
				 *En fin de compte, voici une pression pour connaître le score maximum au tour de qui
				 */
				resList.add(calcPointC(b, c, board, turn + 1, !who));
				/*
				 *Réinitialisez la pierre placée dans cette position pour changer la position
				 */
				board[i][j] = 0;
			}
		}
		/*
		 *La raison pour laquelle le maximum de points est retourné en alternance est que c'est une prémisse que chaque personne fera de son mieux.
		 *Le résultat du renvoi alterné du score maximum est résultat
		 */
		if (who) {
			//Puisque c'est au tour de chokudai, retournez le tableau contenant la valeur maximale de chokudai
			return resList.stream().max(Comparator.comparing(x -> x[0])).get();
		} else {
			//Puisque c'est au tour de chokuko, retournez le tableau contenant la valeur maximale de chokuko
			return resList.stream().max(Comparator.comparing(x -> x[1])).get();
		}

	}

Recommended Posts

ABC --023 --A & B & C
ABC --036-A et B et C
ABC --010 --A & B & C
ABC --028 --A & B & C
ABC --015 --A & B & C
ABC --128 --A & B & C
ABC --012-A et B et C
ABC --018 --A & B & C
ABC --054 --A & B & C
ABC --029- A & B & C
ABC --022 --A & B & C
ABC --020 --A & B & C
ABC --030- A & B & C
ABC --007 --A & B & C
ABC --132- A & B & C
ABC --026 --A & B & C
ABC --014- A & B & C
ABC --016 --A & B & C
ABC --011-A et B et C
ABC --031 --A & B & C
ABC --021 --A & B & C
ABC --025 --A & B & C
ABC --024 --A & B & C
ABC --027 --A & B & C
ABC --080- A & B & C
ABC --133- A & B & C & D
ABC --122 --A & B & C & D
ABC --125- A & B & C & D
ABC --130- A & B & C & D
ABC --126 --A & B & C & D
ABC --134- A & B & C & D & E
ABC --131- A & B & C & D & E
Concours de programmation diverta 2019 A & B & C & D
Problème atcoder ABC113 C
ABC093 C - Mêmes entiers
problème atcoder ABC115 C
AtCoder Beginner Contest 170 A, B, C jusqu'au rubis
Une personne écrivant C ++ a essayé d'écrire Java
Faire un appel SOAP en C #
Appeler les fonctions du langage C depuis Swift
NLP4J [006-034] 100 coups de traitement de langage avec NLP4J # 34 "A B"