การป้อนข้อมูล:
ลำดับที่ไม่ว่างของจำนวนเต็มมากกว่าศูนย์ความยาวซึ่งมากกว่า 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 == 244*3*3*1 == 3636 >= 2436
ตัวอย่างที่ 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: ฉันยินดีที่จะอธิบายการแก้ปัญหาของคุณ