问题练习,检查时,题词出现有错误的答案,但我不能理解错误是什么


n, m = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(n)]
k = int(input())
sum = 0
rad = 0
naydeno = False
for i in range(n):
for l in range(m):
if l != (m - 1) and (matrix[i][l] + matrix[i][l + 1] == 0):
sum += 1
if sum >= k - 1 and sum != 0:
rad = i
naydeno = True
break
sum = 0
# for index, row in enumerate(matrix):
#     count = 0
#     for i in range(len(row) - 1):
#         if row[i] == 0 and row[i + 1] == 0:
#             count += 1
#         if count == 0 and 0 in row:
#             count = 1
#     if count >= k:
#         print(index + 1)
#         break
# print(index, count)
if naydeno:
print(rad + 1)
if naydeno == False:
print(rad)

exercixe:电影院有n排,每排有m个座位。二维数组存储已售出门票的信息,数字1表示这个座位的票已经售出,数字0表示这个座位是空的。收到一个请求,要求为同排相邻的座位出售k张票。确定这样的请求是否可以被满足。

输入数据程序接收数字n和m作为输入。然后有n行包含m个由空格分隔的数字(0或1)。则给定数k。

输出程序应该输出连续有k个空座位的行号。如果有几行这样的行,那么打印最小的合适行的数字。如果没有合适的行,则打印数字0。

核对时,出现有错误答案的铭文,但我无法理解错误是什么

我很难解析你的解决方案,但看起来你给了它一个很好的尝试!这里有另一种可能对你有用的方法。注意,它不会对输入进行错误检查,因此仅用于说明目的。

n = int(input("Rows in cinema: "))
m = int(input("Seats per row: "))
cinema_state = []
for i in range(n):
raw_row_state = input(f"Seat states for row {i + 1}: ")
row_state = [int(raw_seat_state) for raw_seat_state in raw_row_state]
cinema_state.append(row_state)

k = int(input("Seats needed: "))
for i in range(n):
free_row = max_free = cur_free = 0
for j in range(m):
seat_state = cinema_state[i][j]
if seat_state == 0:
cur_free += 1
max_free = max(cur_free, max_free)
else: # seat_state == 1
cur_free = 0

if max_free >= k:
free_row = i + 1
break

print("Free row: ", free_row)

输入/输出:

Rows in cinema:  3
Seats per row:  4
Seat states for row 1:  1010
Seat states for row 2:  1001
Seat states for row 3:  1000
Seats needed:  2
Free row:  2

最新更新