题目:
"""
题目描述:
为庆祝三峡大学建校100周年,学校购入多张墙纸以作装饰,每张墙纸为一个 n x m 的小写字母矩阵。其中,学长想挑选出能够从中读出 "ctgu" 字样的墙纸。具体来说,从墙纸的左侧至右侧选取四列,若第一列含字母 'c',第二列含字母 't',第三列含字母 'g',第四列含字母 'u',则视为好看的墙纸。选取的四列不必连续。
输入说明:
- 输入的第一行包含一个整数 t (1 <= t <= 100),表示测试用例数量。
- 随后,每个测试用例的第一行包含两个整数 n 和 m (1 <= n, m <= 20),表示墙纸的行数和列数。
- 接下来的 n 行,每行包含 m 个小写字母,描述墙纸的具体内容。
输出说明:
- 对于每个测试用例,若墙纸好看,则输出 "YES";否则,输出 "NO"。
"""
代码:
def is_beautiful_wallpaper(n, m, wallpaper):# 遍历墙纸的每一列,寻找包含字母 'c' 的列for col1 in range(m):# 使用列表推导式检查当前列是否包含字母 'c'if 'c' in [wallpaper[row][col1] for row in range(n)]:# 如果找到字母 'c',则从当前列的下一列开始继续遍历,寻找包含字母 't' 的列for col2 in range(col1 + 1, m):# 使用列表推导式检查当前列是否包含字母 't'if 't' in [wallpaper[row][col2] for row in range(n)]:# 如果找到字母 't',则从当前列的下一列开始继续遍历,寻找包含字母 'g' 的列for col3 in range(col2 + 1, m):# 使用列表推导式检查当前列是否包含字母 'g'if 'g' in [wallpaper[row][col3] for row in range(n)]:# 如果找到字母 'g',则从当前列的下一列开始继续遍历,寻找包含字母 'u' 的列for col4 in range(col3 + 1, m):# 使用列表推导式检查当前列是否包含字母 'u'if 'u' in [wallpaper[row][col4] for row in range(n)]:# 如果所有字母都被找到,则返回 "YES"return "YES"# 如果循环结束后还没返回,说明没有找到所有字母,返回 "NO"return "NO"# 读取测试用例数量
t = int(input())
# 循环处理每个测试用例
for _ in range(t):# 读取墙纸的行数和列数n, m = map(int, input().split())# 读取墙纸的内容,并将其存储为一个列表,列表的每个元素是墙纸的一行wallpaper = [input() for i in range(n)]# 调用函数,检查墙纸是否好看,并输出结果print(is_beautiful_wallpaper(n, m, wallpaper))