华为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卷刷题日记 文章被收录于专栏

机试刷题记录

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务