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