Bài tập
Một nhà hát có 10 dòng, dán nhãn A
để J
từ trước ra sau, và 15 ghế trong mỗi hàng, được đánh số từ 1 tới 15 từ trái sang phải.
Chương trình sử dụng các quy tắc sau để chọn chỗ ngồi tốt nhất.
- Quy tắc 1: Tất cả các ghế trong một lần đặt phải ở cùng một hàng, cạnh nhau.
- Quy tắc 2: Các ghế phải càng gần mặt trước càng tốt, sau đó càng gần bên trái càng tốt (chữ cái thấp nhất, sau đó là số thấp nhất)
Viết hàm lấy số lượng vé muốn làm đầu vào số nguyên ( n
) và xuất ra số ghế tốt nhất có sẵn trong danh sách độ dài n
.
Chương trình của bạn nên:
- Đầu ra
-1
nếu 1> Đầu vào hoặc Đầu vào> 15 * - Đầu ra
-1
nếu ghế không có sẵn * - Có chức năng
B(n)
mà người dùng có thể sử dụng để nhập số lượng ghế mong muốn.
* Bạn có thể xuất -1 trong danh sách nếu việc này dễ dàng hơn
Ví dụ
Tôi / O
Gọi B(5)
trên một mảng mới sẽ trả về [A1, A2, A3, A4, A5]
Gọi B(2)
sau đó sẽ trả về [A6, A7]
Gọi B(10)
sau đó sẽ trả lại [B1, B2, ... B9, B10]
Gọi B(-1)
luôn luôn trả về-1
Giải pháp không chơi gôn Python
Theatre = [ [False] * 16 ] * 11
def B(n):
if 0 <= n <= 15:
for i in range(10):
for j in range(15-n+1):
try:
if not Theatre[i][j]:
if not Theatre[i][j + n]:
row = i
start = j
List = []
for q in range(n):
List.append(chr(row + 65) + str(start + q + 1))
Theatre[row][start + q] = True
return List
except:
break
return -1