ความท้าทายคือการเขียนที่สั้นที่สุดการดำเนินการเพื่อหาสิ่งที่เพิ่มขึ้น subsequence
ตัวอย่าง : ให้ S เป็นลำดับ 1 5 7 1 8 4 3 5 [ความยาวของ S = 8]
- เรามีความยาวย่อย 1 ลำดับ 0 [จะพิจารณาเพิ่มขึ้น]
- 6 ลำดับย่อยของความยาว 1 {1,5,7,8,4,3} [ทั้งหมดถือว่าเพิ่มขึ้น]
- (7 * 8) / 2 sub-sequences ของ length 2 [แต่เราจะลบรายการที่ซ้ำกัน], sub-seq ที่เพิ่มขึ้นจะเป็นสีดำเข้ม
{ 15,17 , 11, 18,14,13,57 , 51, 58 , 54,53,55,71, 78 , 74,73,75,84,83,85,43, 45,35 }
[โปรดทราบว่าเราสนใจเฉพาะลำดับย่อยที่เพิ่มมากขึ้นเท่านั้น]
[คุณไม่สามารถเปลี่ยนลำดับขององค์ประกอบภายในลำดับได้ดังนั้นจึงไม่มีลำดับย่อย [37] ในลำดับตัวอย่าง]
- เรามีการเพิ่มซีเควนซ์ย่อยของความยาว 4 ซึ่งคือ 1578 แต่ไม่มีซีเครตย่อยของความยาว 5 ดังนั้นเราจึงพิจารณาความยาวของลำดับย่อยที่เพิ่มขึ้นที่ยาวที่สุด = 4
อินพุต :
a 1 a 2 ... a N (ลำดับ)
ตัวเลขทั้งหมดเป็นจำนวนเต็มบวกน้อยกว่า 10 3
N <= 1,000
ผลผลิต :
เลขจำนวนเต็มหนึ่งค่าที่แสดงถึงความยาวของลำดับย่อยที่เพิ่มขึ้นที่ยาวที่สุดของลำดับอินพุต
sample input(1)
1 2 4 2 5
sample output(1)
4
sample input(2)
1 5 7 1 8 4 3 5
sample output(2)
4
รหัสของคุณควรจะทำงานในเวลาที่เหมาะสมโปรดทดสอบรหัสของคุณในกรณีนี้ก่อนที่จะส่งที่นี่
คุณสามารถรับอินพุตจากไฟล์ / stdin หรือเป็นพารามิเตอร์ฟังก์ชั่นและคุณสามารถพิมพ์เอาต์พุตไปยังไฟล์ / stdout หรือเพียงแค่คืนค่าถ้าคุณเขียนฟังก์ชั่น
คณะกรรมการให้คะแนน
- เดนนิส CJam - 22
- isaacg Pyth - 26
- Howard GolfScript - 35
- haskeller ภูมิใจ Haskell - 56
- Ray Python 3 - 66
- ฮิสโทแกตทับทิม - 67
- DLeh C # - 92
- YosemiteMark Clojure - 94
- faubiguy Python 3 - 113
function f(){...}) หรือฟังก์ชั่นด้านใน (แค่...)? หากเรานับฟังก์ชั่นด้านนอกฟังก์ชั่นที่ไม่ระบุชื่อจะได้รับอนุญาตหรือไม่