งาน
โรงละครมี 10 แถวป้ายA
ไปJ
จากด้านหน้าไปด้านหลังและ 15 ที่นั่งในแต่ละแถวเลข 1 ถึง 15 จากซ้ายไปขวา
โปรแกรมใช้กฎต่อไปนี้เพื่อเลือกที่นั่งที่ดีที่สุด
- กฎข้อที่ 1: ที่นั่งทั้งหมดในการจองหนึ่งรายการจะต้องอยู่ในแถวเดียวกันติดกัน
- กฎข้อที่ 2: ที่นั่งจะต้องอยู่ใกล้กับด้านหน้าที่สุดเท่าที่จะเป็นไปได้และใกล้ชิดทางด้านซ้ายเท่าที่จะทำได้ (ตัวอักษรตัวเล็กที่สุดแล้วตามด้วยหมายเลขต่ำสุด)
เขียนฟังก์ชั่นซึ่งจะมีจำนวนบัตรที่ต้องการเป็นจำนวนเต็มการป้อนข้อมูล (ที่n
) n
และผลที่นั่งที่ดีที่สุดที่มีอยู่ในรายชื่อของความยาว
โปรแกรมของคุณควร:
- เอาต์พุต
-1
ถ้า 1> อินพุตหรืออินพุต> 15 * - ส่งออก
-1
หากไม่มีที่นั่ง * - มีฟังก์ชั่น
B(n)
ที่ผู้ใช้สามารถใช้เพื่อป้อนจำนวนที่นั่งที่ต้องการ
* คุณสามารถส่งออก -1 ในรายการถ้ามันง่ายขึ้น
ตัวอย่าง
I / O
การโทรหาB(5)
อาร์เรย์ใหม่ควรส่งคืนการ[A1, A2, A3, A4, A5]
โทรB(2)
หลังจากนั้นควรส่งคืนการ[A6, A7]
โทรB(10)
หลังจากนั้นควรส่งคืนการ[B1, B2, ... B9, B10]
โทรB(-1)
ควรส่งคืนเสมอ-1
งูหลาม Un-golfed Solution
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