米哈游3.19笔试

第一题色盲问题,用了好几个dfs,过40%,提示超时

line1 = input().strip().split(' ')
m = int(line1[0])
n = int(line1[1])
graph = [['' for _ in range(n)] for _ in range(m)]
i = 0
while i < m:
    line = input()
    graph[i] = [m for m in line]
    i += 1

R = 0
B = 0
G = 0
num1 = 0
num2 = 0
def dfs1(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'R':
        return
    graph[i][j] = 'D'
    dfs1(i-1, j)
    dfs1(i+1, j)
    dfs1(i, j-1)
    dfs1(i, j+1)

def dfs2(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'B':
        return
    graph[i][j] = 'A'
    dfs2(i-1, j)
    dfs2(i+1, j)
    dfs2(i, j-1)
    dfs2(i, j+1)

def dfs3(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'G':
        return
    graph[i][j] = 'A'
    dfs3(i-1, j)
    dfs3(i+1, j)
    dfs3(i, j-1)
    dfs3(i, j+1)

def dfs4(i, j):
    if i < 0 or i >= m or j < 0 or j >= n:
        return
    if graph[i][j] != 'A':
        return
    graph[i][j] = 'Z'
    dfs4(i-1, j)
    dfs4(i+1, j)
    dfs4(i, j-1)
    dfs4(i, j+1)

for i in range(m):
    for j in range(n):
        if graph[i][j] == 'R':
            dfs1(i, j)
            R += 1
            num1 += 1
        elif graph[i][j] == 'B':
            dfs2(i, j)
            num1 += 1
        elif graph[i][j] == 'G':
            dfs3(i, j)
            num1 += 1
for i in range(m):
    for j in range(n):
        if graph[i][j] == 'A':
            dfs4(i, j)
            num2 += 1 
print( num1 - (num2+R))    

第二题删除或增加s中的mhy,得到目标子串t,感觉思路和别人po出来的一样啊,只过了40%,有大佬能帮我看看问题吗

import collections
n = int(input())
i = 0
hash_table1 = collections.defaultdict(int)
hash_table2 = collections.defaultdict(int)
while True:
    try:
        s1 = input()
        s2 = input()
        t1 = ""
        t2 = ""
        m = len(s1) + 1
        n = len(s2) + 1
        for ch in s1:
            if ch == 'm' or ch == 'h' or ch == 'y':
                hash_table1[ch] += 1
            else:
                t1 += ch
        for ch in s2:
            if ch == 'm' or ch == 'h' or ch == 'y':
              hash_table2[ch] += 1
            else:
                t2 += ch

        if t1 == t2 and (hash_table1['m'] - hash_table2['m']) == (hash_table1['h'] - hash_table2['h']) and (hash_table1['y'] - hash_table2['y']) == (hash_table1['m'] - hash_table2['m']) and (hash_table1['y'] - hash_table2['y']) == (hash_table1['h'] - hash_table2['h']):
            print("Yes")
        else:
            print("No")
    except:
        break
    

#24届实习生##我的实习求职记录#
全部评论
第二题思路是什么呀,求教
1 回复 分享
发布于 2023-03-19 23:46 江苏
题面分享:https://www.nowcoder.com/discuss/467108267630534656
点赞 回复 分享
发布于 2023-03-20 08:40 北京
如果是hmmhy和mmhyh应该过不了吧
点赞 回复 分享
发布于 2023-03-20 00:04 美国
第一题用DFS的话,要标一下是否访问过,不然铁超时;第二题没看出来问题,,
点赞 回复 分享
发布于 2023-03-19 23:41 辽宁
是不是hashmap没有clear或者string没有clear
点赞 回复 分享
发布于 2023-03-19 23:38 江苏

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
实习与准备秋招该如何平衡
点赞 评论 收藏
分享
06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-26 15:35
武汉大学 运营
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务