電影院座位編排(Python)
問題簡述:
新冠肺炎讓電影院業者的生意大受影響。因應逐漸解封,電影院推出兩階段售票策略。
首先,VIP家庭客戶可優先訂購劃位,因此這些劃位可能會有相鄰的狀況。
當VIP家庭客戶訂購期限已過,開始銷售一般客戶劃位,此時任何兩人不能左右或前後比鄰而坐,也就是俗稱的梅花座
假設VIP家庭客戶已經完成劃位,設計劃位判斷功能,為一般客戶計算當下還有多少可能座位可以選擇。
如上左圖的X是VIP家庭客戶已經劃位的區域,右圖的◇則是現在可以劃位的位置。
因此這個例子中,可以選擇的座位數量是。
請完成此程式中函式,讀入每個座位座標後(左上角起點是),回傳或來判斷此座位是否可以劃位,代表不可劃位,代表可劃位。
例如此題中座位則傳回、座位傳回、座位傳回。
輸入格式:
- ,: 座位區域的長與寬
- : VIP預定座位數
- 11, … 12 : 第一個預定座位座標
...
- n1, … n2 :第n個預定座位座標
輸出格式:
- 目前可選擇劃位的座位數量
需要完成及繳交的函式:
def SeatChecked(R, C, VIPSeats, Seat)
函式
R
座位區域有幾列C
每列有幾個座位VIPSeats
VIP預定座位坐標Seat
讀入座位坐標- 此函式判斷讀入座位是否可以劃位,可以劃位回傳1,不可劃位回傳0
def SeatChecked(R, C, VIPSeats, Seat):
#請完成並繳交本函式
程式樣板:
def SeatChecked(R, C, VIPSeats, Seat):
#你的程式碼
if __name__ == '__main__':
VIPSeats=[]
R = int(input())
C = int(input())
n = int(input())
for k in range(n):
try:
VIPSeats.append(list(map(int, input().rstrip().split())))
except EOFError:
break
num = 0
for i in range(R):
for j in range(C):
check =[i,j]
check = SeatChecked(R, C, VIPSeats, check)
if check==1:
num+=1
print(num)
範例測資:
測資1
輸入
6
6
5
2 1
2 2
4 0
4 1
4 4
輸出
17
測資2
輸入
10
8
5
2 3
4 2
4 3
7 3
7 4
輸出
60
測資3
輸入
7
6
3
1 2
3 2
5 0
輸出
29
測資4
輸入
8
8
5
1 0
1 1
1 2
3 1
4 3
輸出
45
測資5
輸入
9
10
6
2 0
2 1
4 2
4 3
5 5
5 6
輸出
67
留言