ให้บอกว่าคุณเห็นเพื่อนของคุณป้อนรหัสผ่านของเขาหรือเธอลงในโทรศัพท์ Android ของพวกเขา คุณจำไม่ได้ว่าพวกเขาสร้างรูปแบบอย่างไร แต่คุณจำได้ว่ารูปแบบนั้นเป็นอย่างไร เป็นเพื่อนที่เกี่ยวข้องที่คุณต้องการทราบว่ารหัสผ่านของพวกเขาปลอดภัยเพียงใด งานของคุณคือการคำนวณทุกวิธีที่สามารถทำรูปแบบเฉพาะ
รูปแบบ Android ทำงานอย่างไร
รูปแบบจะถูกวาดบนตารางของโหนด 3x3 ในรูปแบบหนึ่งเข้าชมชุดของโหนดโดยไม่ต้องยกนิ้วของพวกเขาจากหน้าจอ แต่ละโหนดที่พวกเขาเยี่ยมชมเชื่อมต่อกับโหนดก่อนหน้าโดยขอบ มีกฎสองข้อที่ต้องคำนึงถึง
คุณไม่สามารถเยี่ยมชมหนึ่งโหนดมากกว่าหนึ่งครั้ง
ขอบอาจไม่ผ่านโหนดที่ไม่ได้เข้าชม
โปรดทราบว่าในขณะที่มักจะยากมากที่จะดำเนินการและจึงไม่บ่อยมากในแบบ real รวมกันล็อคหุ่นยนต์ก็เป็นไปได้ที่จะย้ายเหมือนอัศวิน นั่นคือเป็นไปได้ที่จะย้ายจากด้านหนึ่งไปยังมุมที่ไม่ติดกันหรืออีกด้านหนึ่ง นี่คือสองตัวอย่างของรูปแบบที่ใช้การเคลื่อนไหวดังกล่าว:
นี่คือGif แบบเคลื่อนไหวของมันที่กำลังแสดงอยู่
การแก้ลวดลาย
รูปแบบทั่วไปอาจมีลักษณะดังนี้:
ด้วยรูปแบบที่เรียบง่ายเช่นนี้มันมีสองวิธีที่สองวาดรูปแบบ คุณสามารถเริ่มต้นที่ปลายทั้งสองด้านใดด้านหนึ่งหลวมและเดินทางผ่านโหนดที่ถูกเน้นสีไปยังอีกด้านหนึ่ง แม้ว่าสิ่งนี้จะเป็นจริงสำหรับหลาย ๆ รูปแบบโดยเฉพาะอย่างยิ่งสิ่งที่มนุษย์ใช้โดยทั่วไปสิ่งนี้ไม่เป็นความจริงสำหรับทุกรูปแบบ
พิจารณารูปแบบต่อไปนี้:
มีสองวิธีแก้ไขปัญหาที่รู้จักได้ทันที หนึ่งเริ่มต้นที่ด้านซ้ายบน:
และเริ่มต้นที่กึ่งกลางด้านล่าง:
อย่างไรก็ตามเนื่องจากบรรทัดได้รับอนุญาตให้ผ่านจุดเมื่อมีการเลือกแล้วมีรูปแบบเพิ่มเติมที่เริ่มต้นที่ตรงกลางด้านบน:
รูปแบบนี้โดยเฉพาะมี 3 รูปแบบการแก้ปัญหา แต่จะมีที่ใดก็ได้ระหว่าง 1 และ 4 โซลูชั่น[อ้างจำเป็น]
นี่คือตัวอย่างของแต่ละรายการ:
1
2
3
4
I / O
โหนดสามารถแสดงเป็นจำนวนเต็มตั้งแต่ศูนย์ถึงเก้ารวมถึงสตริงเทียบเท่าหรืออักขระจาก a ถึง i (หรือ A ถึง I) แต่ละโหนดจะต้องมีตัวแทนที่ไม่ซ้ำกันจากหนึ่งในชุดเหล่านี้
การแก้ปัญหาจะถูกแสดงโดยภาชนะสั่งซื้อที่มีการเป็นตัวแทนโหนด โหนดจะต้องสั่งซื้อในลำดับเดียวกันกับที่พวกเขาผ่าน
รูปแบบจะถูกแสดงโดยคอนเทนเนอร์ที่ไม่เรียงลำดับคู่ของโหนด แต่ละคู่แสดงถึงขอบเริ่มต้นการเชื่อมต่อจุดสองจุดในคู่ การนำเสนอรูปแบบไม่ซ้ำกัน
คุณจะนำเสนอรูปแบบเป็นอินพุตผ่านวิธีอินพุตมาตรฐานและเอาต์พุตโซลูชันที่เป็นไปได้ทั้งหมดที่สร้างรูปแบบเดียวกันผ่านวิธีเอาต์พุตมาตรฐาน
คุณสามารถสมมติว่าแต่ละอินพุตจะมีทางออกอย่างน้อยหนึ่งวิธีและจะเชื่อมต่ออย่างน้อย 4 โหนด
คุณอาจเลือกที่จะใช้ภาชนะที่สั่งซื้อแทนภาชนะที่ไม่ได้สั่งซื้อหากคุณต้องการหรือถูกบังคับให้เลือกภาษา
กรณีทดสอบ
ด้วยโหนดที่จัดเรียงในรูปแบบต่อไปนี้:
0 1 2
3 4 5
6 7 8
อนุญาต{...}
เป็นคอนเทนเนอร์ที่ไม่เรียงลำดับ, [...]
เป็นคอนเทนเนอร์ที่รับคำสั่ง, และ(...)
เป็นคู่
อินพุตและเอาต์พุตต่อไปนี้ควรตรงกัน
{(1,4),(3,5),(5,8)} -> {[1,4,3,5,8]}
{(1,4),(3,4),(5,4),(8,5)} -> {[1,4,3,5,8]}
{(0,4),(4,5),(5,8),(7,8)} -> {[0,4,5,8,7],[7,8,5,4,0]}
{(0,2),(2,4),(4,7)} -> {[0,1,2,4,7],[1,0,2,4,7],[7,4,2,1,0]}
{(0,2),(2,6),(6,8)} -> {[0,1,2,4,6,7,8],[1,0,2,4,6,7,8],[8,7,6,4,2,1,0],[7,8,6,4,2,1,0]}
{(2,3),(3,7),(7,8)} -> {[2,3,7,8],[8,7,3,2]}
{(0,7),(1,2),(1,4),(2,7)} -> {[0,7,2,1,4],[4,1,2,7,0]}
{(0,4),(0,7),(1,3),(2,6),(2,8),(3,4),(5,7)} -> {[1,3,4,0,7,5,8,2,6]}
{(1,3),(5,8)} -> {}
Imgur อัลบั้มของทุกกรณีทดสอบเป็นภาพที่สามารถพบได้ที่นี่ รูปแบบที่อยู่ในการแก้ปัญหาสีฟ้าเป็นสีแดง
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ