ข้ามลำดับ
รับรายการของจำนวนเต็มบวกA
เรียกมันว่าลำดับที่เพิ่มขึ้นถ้าแต่ละองค์ประกอบมากกว่าหรือเท่ากับหนึ่งก่อนหน้า; และเรียกว่าเป็นลำดับที่ลดลงหากแต่ละองค์ประกอบน้อยกว่าหรือเท่ากับหนึ่งก่อนหน้า
ลำดับที่เพิ่มขึ้นบางส่วน:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
บางลำดับลดลง:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
ลำดับข้ามคือรายการที่สามารถย่อยสลายเป็นสอง subsequences เคล็ดหนึ่งลำดับที่เพิ่มขึ้นและอื่น ๆ ตามลำดับการลด
ตัวอย่างเช่นรายการ:
[3,5,2,4,1]
เป็นลำดับการข้ามเนื่องจากสามารถแบ่งย่อยเป็น:
[3, 4 ]
[ 5,2, 1]
ที่[3,4]
เป็นลำดับที่เพิ่มขึ้นและ[5,2,1]
เป็นลำดับที่ลดลง เราจะเรียกคู่ดังกล่าว (ที่เพิ่มขึ้นลดลง) subsequences การสลายตัวของลำดับการผสมข้ามพันธุ์
รายการ:
[4,5,2,1,3]
ไม่ใช่ลำดับการข้าม ไม่มีวิธีที่จะย่อยสลายมันเป็นลำดับที่เพิ่มขึ้นและลดลง
งานของคุณคือการเขียนโปรแกรม / ฟังก์ชั่นการใช้เป็นรายการของจำนวนเต็มบวก; และถ้าเป็นลำดับข้ามให้ส่งคืนสองรายการในหนึ่งในการย่อยสลาย หรือค่า "เท็จ" ที่สอดคล้องกันหากรายการไม่ใช่ลำดับการข้าม
นี่คือรหัสกอล์ฟ ; โปรแกรม / ฟังก์ชั่นที่สั้นที่สุดในแต่ละภาษาเป็นผู้ชนะ
กฎ:
- อินพุตมีความยืดหยุ่น
- ช่องโหว่ปกติเป็นสิ่งต้องห้าม
- หากมีหลายวิธีที่ถูกต้องในการย่อยสลายอินพุตคุณสามารถส่งออกหนึ่งหรือทั้งหมดของพวกเขา
- การจัดรูปแบบเอาต์พุตสำหรับการแยกย่อยมีความยืดหยุ่น แต่จะต้องมีความชัดเจนเกี่ยวกับความแตกต่างระหว่างสององค์ประกอบ
- คุณสามารถใช้ค่าเอาต์พุตที่สอดคล้องกันเพื่อระบุว่าอินพุตไม่ใช่ลำดับการข้าม ตราบใดที่มันไม่คลุมเครือเมื่อเทียบกับเอาท์พุทสำหรับการข้ามลำดับ คุณควรระบุค่าเท็จในคำตอบของคุณ
กรณีทดสอบ:
ใช้False
เพื่อระบุลำดับที่ไม่ข้าม:
[3, 5, 2, 4, 1] => [3, 4], [5, 2, 1]
[3, 5, 2, 4, 4, 1, 1] => [3, 4, 4], [5, 2, 1, 1]
[7, 9, 8, 8, 6, 11] => [7, 8, 8, 11], [9, 6]
[7, 9, 8, 8, 6, 11] => [7, 9, 11], [8, 8, 6] # also valid
[7, 9, 8, 8, 6, 11] => [7, 8, 11], [9, 8, 6] # also valid
[7, 8, 9, 10, 20, 30] => [7, 8, 9, 20, 30], [10]
[7, 8, 9, 10, 20, 30] => [8, 9, 10, 20, 30], [7] # this is also valid
[5, 5, 5] => [5, 5, 5], []
[4, 5, 2, 1, 3] => False
[3, 4, 3, 4, 5, 2, 4] => False
[3, 5, 2, 4, 4, 1, 1]
กรณีทดสอบที่แนะนำ: กรณีทดสอบในปัจจุบันช่วยให้คุณได้รับไปด้วย>=
/ <
เมื่อมันจริงๆควรจะ/>=
<=