单选题(18题)

编程题(2题)

矩阵判断

题目描述:

给出一大一小两个方形的字符串矩阵,请你判断小的矩阵是否为大矩阵的子矩阵。

输入描述:
第一行给出一个正整数T,代表测试样例的数量。
对于每一组样例,第一行给出两个正整数m,n, 代表两个字符串矩阵的大小
接下来给出一个m x m的字符串矩阵
最后给出一个n x n的字符串矩阵
保证字符串矩阵中只包含#和.两种字符
1 ≤ T ≤ 10
1 ≤ n ≤ m ≤ 50

输出描述:
对于每一组测试样例,如果第二个矩阵是第一个矩阵的子矩阵,则输出Yes,否则输出No

示例:
输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
2
3 2
#.#
.#.
#.#
#.
.#
4 1
....
....
....
....
#

输出:

1
2
Yes
No

代码: (AC 100%)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def is_submatrix(matrix1, matrix2):
rows1, cols1 = len(matrix1), len(matrix1[0])
rows2, cols2 = len(matrix2), len(matrix2[0])
for i in range(rows1 - rows2 + 1):
for j in range(cols1 - cols2 + 1):
submatrix = [row[j:j + cols2] for row in matrix1[i:i + rows2]]
if submatrix == matrix2:
return True
return False

T = int(input())
for i in range(T):
m,n = map(int,input().split())
matrix1,matrix2 = [],[]
for m1 in range(m):
matrix1.append([char for char in input().strip()])
for m2 in range(n):
matrix2.append([char for char in input().strip()])

if is_submatrix(matrix1, matrix2):
print("Yes")
else:
print("No")

能点几碗菜

题目描述:

小红来到了一家餐馆,准备点一些菜。
已知该餐馆有n道菜,第i道菜的售价为a_i。小红准备点一些价格相同的菜,但小红不会点单价超过m的菜。
小红想知道,自己最多可以点多少菜?

输入描述:
第一行输入两个正整数n,m(1 ≤ n ≤ 10**6, 1 ≤ m ≤ 100), 分别表示菜单上的菜品数量以及小红准备点的最大单价。
第二行输入n个正整数w_1, w_2, …, w_n(1 ≤ w_i ≤ 100), 分别表示每道菜的售价。

输出描述:
输出仅一行一个整数,表示小红最多可以点的菜的数量。

示例1:
输入:

1
2
9 6
2 3 3 6 6 6 9 9 23

输出:

1
3

说明:
小红点单价6元的菜,共可以点3份菜。

代码: (AC 100%)

1
2
3
4
5
6
7
n,m = map(int,input().split())
nums = [int(i) for i in input().split()]

max_count = 0
for i in range(1, m+1):
max_count = max(max_count, nums.count(i))
print(max_count)