คำถามนี้มีการตั้งค่าคล้ายกับFind a array ที่เหมาะกับชุดของผลรวมแม้ว่าจะค่อนข้างแตกต่างกันในเป้าหมาย
พิจารณาอาร์เรย์ของความยาวA nอาร์เรย์มีจำนวนเต็มบวกเท่านั้น A = (1,1,2,2)เช่น ให้เรากำหนดf(A)เป็นชุดของผลรวมของทุกคนที่ไม่ว่างเปล่า subarrays Aต่อเนื่องกันของ ในกรณีf(A) = {1,2,3,4,5,6}นี้ ขั้นตอนในการผลิตf(A) มีดังนี้:
subarrays ของAreA จำนวนเงินของตนมี(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2) ชุดที่คุณได้รับจากรายการนี้จึงเป็น1,1,2,2,2,3,4,4,5,6{1,2,3,4,5,6}
เราเรียกอาเรย์ที่A ไม่ซ้ำกันถ้าไม่มีอาเรย์อื่นBที่มีความยาวเท่ากันเช่นนั้นf(A) = f(B)ยกเว้นสำหรับอาเรย์ที่Aกลับด้าน เป็นตัวอย่างf((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}แต่ไม่มีความยาวอื่น ๆ3ที่สร้างชุดของผลรวมเดียวกัน
เราจะพิจารณาอาร์เรย์ที่องค์ประกอบที่มีทั้งจำนวนเต็มรับหรือs s+1เช่นถ้าs=1อาร์เรย์เท่านั้นที่จะมีและ12
งาน
งานสำหรับที่กำหนดnและsจะนับจำนวนอาร์เรย์ที่ไม่ซ้ำกันของความยาวนั้น คุณสามารถสรุปได้ว่าsอยู่ระหว่างและ19
คุณไม่ควรนับการย้อนกลับของอาเรย์รวมทั้งอาเรย์เอง
ตัวอย่าง
s = 1n+1คำตอบอยู่เสมอ
s = 2คำตอบที่นับจากn = 1ขึ้นคือ:
2,3,6,10,20,32,52,86
s = 8คำตอบที่นับจากn = 1ขึ้นคือ:
2,3,6,10,20,36,68,130
คะแนน
สำหรับรับnรหัสของคุณควรเอาท์พุทคำตอบสำหรับทุกค่าของsจากไป1 9คะแนนของคุณคือมูลค่าสูงสุดnซึ่งจะเสร็จสมบูรณ์ในหนึ่งนาที
การทดสอบ
ฉันจะต้องเรียกใช้รหัสของคุณบนเครื่องอูบุนตูของฉันดังนั้นโปรดระบุคำแนะนำโดยละเอียดที่สุดเท่าที่จะทำได้เพื่อรวบรวมและเรียกใช้รหัสของคุณ
ลีดเดอร์บอร์ด
- n = 24โดย Anders Kaseorg ในRust (34 วินาที)
- n = 16โดย Ourous in Clean (36 วินาที)
- n = 14โดย JRowan ในCommon LISP (49 วินาที)