ความคิดที่นี่คือการสร้างรูปแบบการทำซ้ำเกือบ นั่นคือลำดับการสร้างการเปลี่ยนแปลงในนาทีสุดท้ายเพื่อหลีกเลี่ยงการทำซ้ำของการเรียงลำดับบางส่วน ผลที่ตามมาของประเภท AA และ ABA จะต้องหลีกเลี่ยง (โดยที่ B ไม่เกิน A)
ตัวอย่าง:
ฉันจะไปข้างหน้าและเริ่มต้นด้วยการแสดงตัวอย่างเล็ก ๆ ทั้งหมดเพื่อให้คำอธิบายของฉันชัดเจน เริ่มจาก 0
ที่ถูกต้อง: 0 ไม่ถูกต้อง: 00 (รูปแบบ AA) ที่ถูกต้อง: 01 ไม่ถูกต้อง: 010 (รูปแบบ ABA) ไม่ถูกต้อง: 011 (รูปแบบ AA) ที่ถูกต้อง: 012 ที่ถูกต้อง: 0120 ไม่ถูกต้อง: 0121 (รูปแบบ ABA) ไม่ถูกต้อง: 0122 (รูปแบบ AA) ไม่ถูกต้อง: 01200 (รูปแบบ AA) ไม่ถูกต้อง: 01201 (รูปแบบ ABA; 01-2-01) ไม่ถูกต้อง: 01202 (รูปแบบ ABA) ที่ถูกต้อง: 01203
ตอนนี้ผมเชื่อมั่นว่า4
จะไม่จำเป็น 0123
แต่ผมไม่ได้มีหลักฐานเพราะฉันได้พบได้อย่างง่ายดายลำดับของหลายร้อยตัวอักษรมานานแล้วว่าการใช้งานเท่านั้น (อาจเกี่ยวข้องอย่างใกล้ชิดกับวิธีที่อักขระสามตัวเท่านั้นที่จำเป็นต้องมีสตริงไม่สิ้นสุดที่ไม่มีรูปแบบ AA ใด ๆ มีหน้า Wikipediaในเรื่องนี้)
Input / Output
n
การป้อนข้อมูลเป็นหนึ่งบวกจำนวนเต็มไม่ใช่ศูนย์ n <= 1000
คุณอาจจะคิดว่า
เอาต์พุตเป็นn
ลำดับ -character โดยไม่มีลำดับที่ตรงกับรูปแบบที่ต้องห้าม (AA หรือ ABA)
ตัวอย่างอินพุตและเอาต์พุต
>>> 1 0 >>> 2 01 >>> 3 012 >>> 4 0120 >>> 5 01203 >>> 50 01203102130123103201302103120132102301203102132012
กฎระเบียบ
- อนุญาตเฉพาะอักขระ
0123
เท่านั้น - B คือไม่เกิน A. นี้คือการหลีกเลี่ยงสถานการณ์ที่
012345
จะต้องมีตามมาด้วย6
เพราะมีนี้:0123451
1-2345-1
กล่าวอีกนัยหนึ่งลำดับจะไม่สำคัญและไม่น่าสนใจ n
อาจถูกป้อนผ่านวิธีการใด ๆ ที่ต้องการยกเว้นการเข้ารหัสอย่างหนัก- ผลลัพธ์อาจเป็นรายการหรือสตริงขึ้นอยู่กับว่าจะง่ายกว่า
- ไม่มีกำลังดุร้าย ; เวลาทำงานควรอยู่ในลำดับนาทีเป็นอย่างน้อยหนึ่งชั่วโมงในเครื่องที่ช้า
n=1000
มาก ๆ (นี่มีจุดประสงค์เพื่อตัดสิทธิ์การแก้ปัญหาที่เพิ่งวนรอบn
การเปลี่ยนลำดับความยาวทั้งหมดของ{0,1,2,3}
ดังนั้นไม่อนุญาตให้ใช้กลอุบายและกลอุบายที่คล้ายกัน) - ช่องโหว่มาตรฐานไม่ได้รับอนุญาตตามปกติ
- การให้คะแนนอยู่ในหน่วยไบต์ นี่คือรหัสกอล์ฟดังนั้นรายการที่สั้นที่สุดชนะ (อาจ - ดูโบนัส)
- โบนัส:เลือกตัวเลขต่ำสุดที่อนุญาตในแต่ละขั้นตอน ถ้า
1
และเป็นทางเลือกที่เป็นไปได้สำหรับหลักในลำดับถัดไปให้เลือก3
1
ลบ5ไบต์จากคะแนนของคุณ อย่างไรก็ตามจดบันทึกย่อด้านล่าง
บันทึก!
ปลายตายเป็นไปได้ โปรแกรมหรือฟังก์ชั่นของคุณต้องหลีกเลี่ยงสิ่งเหล่านี้ นี่คือตัวอย่าง:
ปัญหา: ตอ ปัญหา: ตอ ปัญหา: ตอ ปัญหา: ตอ
แต่ละลำดับเหล่านี้ไม่สามารถขยายเพิ่มเติมได้อีก (โดยไม่ต้องใช้4
) แต่โปรดทราบว่ามีความแตกต่างที่สำคัญระหว่างสองคนแรกและสองคนที่สอง ฉันจะแทนที่การเริ่มต้นลำดับต้นที่ใช้ร่วมกันด้วยX
เพื่อทำให้ชัดเจนขึ้น
ตอ: X2130120 ตอ: X2130123 ตอ: X320 ตอ: X321301203102130
ตัวเลขสองหลักสุดท้ายของการX
อยู่10
ดังนั้นทางเลือกที่เป็นไปได้เพียง แต่สำหรับหลักถัดไปและ2
3
การเลือก2
นำไปสู่สถานการณ์ที่ต้องยุติลำดับ อัลกอริทึมโลภจะไม่ทำงานที่นี่ (ไม่ใช่โดยไม่มีการย้อนรอย)
n
แต่เมื่อพบว่าโปรแกรมของฉันพบว่ามักจะใช้เวลานานกว่าโดยเฉลี่ย 10 หลักในแต่ละครั้งฉันมั่นใจว่ามีลำดับอนันต์อยู่ ฉันไม่แน่ใจว่าวิธีอัลกอริทึมกึ่งโลภสามารถทดสอบสำหรับลำดับขนาดใหญ่โดยพลการ ฉันจะ จำกัดต้องการไปn
= 1000 n
และก็ไม่ต้องกังวลเกี่ยวกับการที่สูงขึ้น
AA
เป็นประเภทABA
ที่B
ว่างเปล่าจริงๆ นี่อาจช่วยปรับปรุงโซลูชันบางอย่างได้
n
? หากมีคนให้อัลกอริธึมกึ่งโลภแบบฮิวริสติกคุณจะตรวจสอบได้อย่างไรว่ามันไม่เกิดปัญหากับความยาวขนาดใหญ่มาก? ปัญหาทั่วไปเป็นปัญหาที่น่าสนใจและฉันไม่สามารถค้นพบสิ่งใดในการหลีกเลี่ยงรูปแบบที่เราจำกัดความยาวของส่วนของรูปแบบ หากใครบางคนสามารถผลิตสูตรทั่วไปฉันคาดหวังว่าจะเป็นวิธีที่ดีที่สุด