2024届-JD-(改编题)-第二套

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 合集传送们 -> 🧷学长刷题笔记

🍒 本专栏已收集 140+ 套题 🍄 题面描述等均已改编,如果和你实际看到的题面描述不一样请理解,做法和题目本质基本不变。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞

🥢 01.卢小姐的魔法面料

问题描述

卢小姐是一名服装设计师,她最近发现了一种神奇的面料。这种面料由 的网格组成,每个格子上有三种可能的图案:圆点(.)、星星(*)和爱心(o)。

这种面料的图案会不断变化,同时面料的整体颜色也会随之改变。经过长时间的观察,卢小姐发现了以下规律:

  • 如果面料上只出现 o*o 的图案组合,那么面料会变成蓝色。
  • 如果面料上只出现 *o* 的图案组合,那么面料会变成红色。
  • 如果面料上同时出现 o*o*o* 的图案组合,或者两者都不出现,那么面料会保持白色。

现在,卢小姐想请你帮忙判断,给定一种面料的图案,它的颜色会是什么。

输入格式

第一行包含一个正整数 ,表示询问的次数。

接下来对于每组询问,输入三行,每行包含一个长度为 的字符串,表示面料的图案。字符串只包含字符 '.''*''o'

输出格式

对于每组询问,输出一行,表示面料的颜色:

  • 如果面料是蓝色,输出 yukari
  • 如果面料是红色,输出 kou
  • 如果面料是白色,输出 draw

样例输入

3
...
o*o
...
...
*o*
...
o..
*..
o..

样例输出

yukari
kou
yukari

数据范围

题解

本题考察了字符串的处理和判断,主要是模拟。

需要分别判断面料的每一行和每一列是否出现了 o*o*o* 的图案组合。

具体步骤如下:

  1. 读入询问次数
  2. 对于每组询问:
    • 读入面料的图案,存储为一个 的字符矩阵。
    • 初始化两个布尔变量 bluered,分别表示是否出现了 o*o*o* 的图案组合,初始值为 false
    • 遍历面料的每一行,判断是否出现了 o*o*o* 的图案组合,如果出现则将对应的布尔变量设为 true
    • 将面料的图案进行转置,得到每一列的图案。
    • 遍历转置后的每一行(即原面料的每一列),判断是否出现了 o*o*o* 的图案组合,如果出现则将对应的布尔变量设为 true
    • 根据 bluered 的值,输出面料的颜色。

时间复杂度为 ,空间复杂度为

参考代码

  • Python
t = int(input())

for _ in range(t):
    fabric = [input().strip() for _ in range(3)]
    fabric_t = list(map(''.join, zip(*fabric)))
    
    blue = any(row == 'o*o' for row in fabric + fabric_t)
    red = any(row == '*o*' for row in fabric + fabric_t)
    
    if blue and not red:
        print('yukari')
    elif red and not blue:
        print('kou')
    else:
        print('draw')
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        
        while (t-- > 0) {
            char[][] fabric = new char[3][3];
            for (int i = 0; i < 3; i++) {
                fabric[i] = sc.next().toCharArray();
            }
            
            boolean blue = false, red = false;
            
            for (int i = 0; i < 3; i++) {
                if (fabric[i][0] == 'o' && fabric[i][1] == '*' && fabric[i][2] == 'o') {
                    blue = true;
                }
                if (fabric[i][0] == '*' && fabric[i][1] == 'o' && fabric[i][2] == '*') {
                    red = true;
                }
            }
            
            for (int j = 0; j < 3; j++) {
                if (fabric[0][j] == 'o' && fabric[1][j] == '*' && fabric[2][j] == 'o') {
                    blue = true;
                }
                if (fabric[0][j] == '*' && fabric[1][j] == 'o' && fabric[2][j] == '*') {
                    red = true;
                }
            }
            
            if (blue && !red) {
                System.out.println("yukari");
            } else if (red && !blue) {
                System.out.println("kou");
            } else {
                System.out.println("draw");
            }
        }
    }
}
  • Cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    int t;
    cin >> t;
    
    while (t--) {
        char fabric[3][3];
        for (int i = 0; i < 3; i++) {
            cin >> fabric[i];
        }
        
        bool blue = false, red = false;
        
        for (int i = 0; i < 3; i++) {
            if (fabric[i][0] == 'o' && fabric[i][1] == '*' && fabric[i][2] == 'o') {
                blue = true;
            }
            if (fabric[i][0] == '*' && fabric[i][1] == 'o' && fabric[i][2] == '*') {
                red = true;
            }
        }
        
        for (int j = 0; j < 3; j++) {
            if (fabric[0][j] == 'o' && fabric[1][j] == '*' && fabric[2][j] == 'o') {
                blue = true;
            }
            if (fabric[0][j] == '*' && fabric[1][j] == 'o' && fabric[2][j] == '*') {
                red = true;
            }
        }
        
        if (blue && !red) {
            cout << "yukari" << endl;
        } else 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏短期内不再更新,请勿继续订阅

全部评论

相关推荐

评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务