การป้อนข้อมูล:
ลำดับที่ไม่ว่างของจำนวนเต็มมากกว่าศูนย์ความยาวซึ่งมากกว่า 1
เอาท์พุท:
ผลิตภัณฑ์ที่ใหญ่ที่สุดขององค์ประกอบทั้งหมดของการเรียงลำดับที่ยาวที่สุดระหว่างองค์ประกอบขั้นต่ำและสูงสุดของลำดับรวมถึงตัวเอง
บันทึก:
เนื่องจากองค์ประกอบขั้นต่ำและสูงสุดสามารถทำซ้ำได้ดังนั้นจึงจำเป็นต้องหาคำตอบที่ชัดเจนเพื่อหาองค์ประกอบที่เป็นไปได้ที่ยาวที่สุดที่ปลายด้านหนึ่งซึ่งเป็นค่าต่ำสุดและที่ส่วนอื่น ๆ ของลำดับสูงสุด หากมีหลายองค์ประกอบที่ยาวที่สุดให้เลือกส่วนประกอบที่มีผลิตภัณฑ์ที่ใหญ่ที่สุด
ตัวอย่าง:
ตัวอย่างที่ 1:
การป้อนข้อมูล: [5, 7, 3, 2, 1, 2, 2, 7, 5]
เอาท์พุท: 42
คำอธิบาย:
min == 1
, max == 7
. มี 2 subsequences ไปได้ด้วยนาทีและสูงสุดที่ปลายคือและ[1, 2, 2, 7]
[7, 3, 2, 1]
ความยาวของพวกเขาคือเท่ากันดังนั้นการเปรียบเทียบผลิตภัณฑ์และ7*3*2*1 == 42
1*2*2*7 == 28
เพราะ42 >= 28
คำตอบ: 42
.
ตัวอย่างที่ 2:
การป้อนข้อมูล: [1, 2, 2, 2, 4, 3, 3, 1]
เอาท์พุท: 32
คำอธิบาย:
min == 1
, max == 4
. 2 subsequences: และ[1, 2, 2, 2, 4]
[4, 3, 3, 1]
ความยาวของมีค่ามากกว่าความยาวของ[1, 2, 2, 2, 4]
[4, 3, 3, 1]
ผลิตภัณฑ์: 1*2*2*2*4 == 32
=> 32
คำตอบคือ
ตัวอย่าง 3 มิติ:
การป้อนข้อมูล: [1, 2, 3, 4, 3, 3, 1]
เอาท์พุท: 36
คำอธิบายสั้น ๆ :
min == 1
, max == 4
. 2 subsequences: และ[1, 2, 3, 4]
, , => คำตอบคือ[4, 3, 3, 1]
1*2*3*4 == 24
4*3*3*1 == 36
36 >= 24
36
ตัวอย่างที่ 4:
การป้อนข้อมูล: [2, 2, 2]
เอาท์พุท: 8
คำอธิบาย:
min == 2
, max == 2
. 2 subsequences ที่แตกต่างกันและ[2, 2]
[2, 2, 2]
ความยาวของ[2, 2, 2]
[2, 2]
มีค่ามากกว่าความยาวของ ผลิตภัณฑ์: 2*2*2 == 8
=> 8
คำตอบคือ
มากกว่า (สุ่ม) :
>>>[7, 2, 3, 6, 8, 6, 2, 5, 4, 3]
288
>>>[3, 3, 8, 9, 1, 7, 7, 2, 2, 4]
9
>>>[3, 2, 6, 5, 4, 1, 8, 8, 7, 9]
4032
>>>[7, 4, 2, 8, 8, 3, 9, 9, 5, 6]
31104
ตรวจสอบทางออกของคุณ:
นี่คือ Python 3 แลมบ์ดา(788 ไบต์)ซึ่งตอบสนองความต้องการของงาน:
lambda O: __import__('functools').reduce(__import__('operator').mul,O[[[slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1),slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1)][__import__('functools').reduce(__import__('operator').mul,O[O.index(min(O)):(len(O)-1-O[::-1].index(max(O)))+1],1)>=__import__('functools').reduce(__import__('operator').mul,O[O.index(max(O)):len(O)-1-O[::-1].index(min(O))+1],1)],slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1),slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)][(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))>len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))-(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))<len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))]],1)
ผู้ชนะ:
ทางออกที่สั้นที่สุดจะเป็นผู้ชนะ ทุกภาษาการเขียนโปรแกรมได้รับการยอมรับ
PS: ฉันยินดีที่จะอธิบายการแก้ปัญหาของคุณ