华为OD机试E卷 - 猜数字 Java
题目描述
一个人设定一组四码的数字作为谜底,另一方猜。
每猜一个数,出数者就要根据这个数字给出提示,提示以XAYB形式呈现,直到猜中位置。
其中X表示位置正确的数的个数(数字正确且位置正确),而Y表示数字正确而位置不对的数的个数。
例如,当谜底为8123,而猜谜者猜1052时,出题者必须提示0A2B。
例如,当谜底为5637,而猜谜者才4931时,出题者必须提示1A0B。
当前已知N组猜谜者猜的数字与提示,如果答案确定,请输出答案,不确定则输出NA。
输入描述
第一行输入一个正整数,0<N < 100。
接下来N行,每一行包含一个猜测的数字与提示结果。
输出描述
输出最后的答案,答案不确定则输出NA。
示例1
输入
6
4815 1A1B
5716 0A1B
7842 0A1B
4901 0A0B
8585 3A0B
8555 2A1B
输出
3585
Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 输入猜测的次数
// 存储所有猜测的数字和提示结果
List<String[]> guessInfos = new ArrayList<>();
for (int i = 0; i < n; i++) {
String guessNum = scanner.next(); // 输入猜测的数字
String guessResult = scanner.next(); // 输入猜测的结果
guessInfos.add(new String[]{guessNum, guessResult}); // 将猜测的数字和结果存入列表中
}
int validCount = 0; // 记录符合条件的答案数量
String validAnswer = ""; // 存储符合条件的答案
// 遍历所有可能的四位数
for (int num = 0; num <= 9999; num++) {
String answer = String.format("%04d", num); // 将数字格式化为四位数字符串
boolean isValid = true; // 标记当前答案是否有效
// 遍历每个猜测的数字和结果
for
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
机试E卷D卷刷题日记 文章被收录于专栏
机试刷题记录