អគារខ្ពស់

ល្បែងផ្គុំតក្កវិជ្ជាបែបការេឡាតាំង៖ ដាក់កម្ពស់អគារ 1-N ដើម្បីឱ្យតម្រុយនៅគែមទាំងបួន ដែលបង្ហាញចំនួនអគារដែលអាចមើលឃើញពីទិសនីមួយៗ ត្រូវទាំងអស់។

របៀបលេងអគារខ្ពស់

អគារខ្ពស់ជាល្បែងផ្គុំតក្កវិជ្ជាបែបដាក់លេខនៅលើក្តារការេ ដែលលេខនីមួយៗតំណាងឱ្យកម្ពស់អគារមួយ។ មិនដូចស៊ូដូគុទេ ទីនេះគ្មានប្រអប់តូចៗត្រូវបំពេញឡើយ — បញ្ហាប្រឈមទាំងអស់មកពីការេឡាតាំង (កម្ពស់នីមួយៗលេចឡើងតែម្តងគត់ក្នុងជួរដេកនិងជួរឈរនីមួយៗ) រួមផ្សំជាមួយនឹងសំណុំតម្រុយ "ភាពមើលឃើញ" ដែលបោះពុម្ពនៅជុំវិញគែមទាំងបួននៃក្តារ។ តម្រុយទាំងនោះប្រាប់អ្នកថា ប្រសិនបើអ្នកឈរនៅគែមនោះ ហើយសម្លឹងមើលត្រង់តាមជួរដេកឬជួរឈរ អ្នកនឹងឃើញអគារប៉ុន្មានពិតប្រាកដ ព្រោះអគារខ្ពស់ជាងនៅខាងមុខនឹងបាំងអគារទាបជាងនៅខាងក្រោយ។ ការវែកញែកថាកម្ពស់នីមួយៗគួរនៅត្រង់ណា ដោយផ្អែកតែលើចំនួនមើលឃើញទាំងនេះ និងច្បាប់ការេឡាតាំង គឺជាខ្លឹមសារទាំងមូលនៃល្បែងនេះ — មិនចាំបាច់ទាយទេ ហើយក៏មិនចាំបាច់គណនាអ្វីក្រៅពីរាប់ដែរ។

គោលដៅ

បំពេញគ្រប់ប្រអប់នៃក្តារ N×N ដោយកម្ពស់អគារពី 1 ដល់ N ដើម្បីឱ្យជួរដេកនិងជួរឈរនីមួយៗមានគ្រប់កម្ពស់ម្តងគត់ ហើយឱ្យតម្រុយភាពមើលឃើញនីមួយៗដែលបង្ហាញនៅជុំវិញគែម ត្រូវនឹងចំនួនអគារដែលអាចមើលឃើញពិតប្រាកដពីទិសនោះនៅលើក្តារដែលបានបំពេញរួច។ មិនមែនរាល់បន្ទាត់គែមទាំងអស់ត្រូវតែមានតម្រុយនោះទេ — ខ្លះត្រូវបានទុកឱ្យទទេដោយចេតនា — ប៉ុន្តែតម្រុយណាដែល "បង្ហាញ" ត្រូវតែពិតត្រឹមត្រូវ។ នៅពេលក្តារទាំងមូលត្រូវបានបំពេញត្រឹមត្រូវ អ្នកឈ្នះ។

ច្បាប់

  • ជួរដេកនីមួយៗត្រូវមានគ្រប់កម្ពស់ពី 1 ដល់ N ម្តងគត់ ហើយជួរឈរនីមួយៗក៏ត្រូវមានគ្រប់កម្ពស់ពី 1 ដល់ N ម្តងគត់ដែរ — ដូចជាជួរដេកឬជួរឈរនៃស៊ូដូគុ ប៉ុន្តែគ្មានប្រអប់តូចៗត្រូវព្រួយបារម្ភទេ។
  • តម្រុយដែលបោះពុម្ពនៅខាងឆ្វេងជួរដេកប្រាប់អ្នកថាមានអគារប៉ុន្មានមើលឃើញនៅពេលសម្លឹងតាមជួរដេកនោះពីឆ្វេងទៅស្តាំ។ តម្រុយខាងស្តាំប្រាប់រឿងដូចគ្នាតែសម្លឹងពីស្តាំទៅឆ្វេង។ តម្រុយខាងលើជួរឈរគឺសម្លឹងពីលើចុះក្រោម រីឯតម្រុយខាងក្រោមគឺសម្លឹងពីក្រោមឡើងលើ។
  • អគារមួយ "មើលឃើញ" ពីទិសណាមួយ ប្រសិនបើវាខ្ពស់ជាងអគារគ្រប់ខ្នងដែលទិសនោះបានឆ្លងកាត់រួចមកហើយ។ អគារដំបូងគេនៅក្នុងបន្ទាត់មើលណាមួយតែងតែមើលឃើញ (ព្រោះគ្មានអ្វីនៅខាងមុខវានៅឡើយ) បន្ទាប់ពីនោះ មានតែអគារដែលក្លាយជា "ខ្ពស់បំផុតថ្មី" ប៉ុណ្ណោះដែលត្រូវរាប់។
  • ដោយសារកម្ពស់នីមួយៗនៅក្នុងជួរដេកឬជួរឈរខុសគ្នាទាំងអស់ (ច្បាប់ការេឡាតាំងធានាថាគ្មានស្មើគ្នា) ភាពមើលឃើញមិនដែលមានភាពមិនច្បាស់លាស់ឡើយ — អគារមួយត្រូវតែខ្ពស់ជាងអគារទាំងអស់ពីមុនវាយ៉ាងច្បាស់ ឬមួយក៏ត្រូវបានបាំងដោយអគារខ្ពស់ជាង។
  • ឧទាហរណ៍គណនា៖ អានកម្ពស់ [2, 1, 4, 3] ពីឆ្វេងទៅស្តាំ ចំនួនអគារមើលឃើញគឺ 2។ ឃើញ 2 មុនគេ (គ្មានអ្វីខ្ពស់ជាងវាពីមុន)។ ឃើញ 1 ដែលទាបជាង 2 ដែលឃើញរួច ដូច្នេះវាត្រូវបាំង។ ឃើញ 4 ដែលខ្ពស់ជាងអ្វីៗទាំងអស់ដែលឃើញរហូតមក (គឺ 2) ដូច្នេះវាក្លាយជាមើលឃើញថ្មី — នេះជាអគារទី 2 ដែលមើលឃើញ។ ឃើញ 3 ដែលទាបជាង 4 ដែលទើបឃើញ ដូច្នេះវានៅតែត្រូវបាំង។ សរុប៖ មើលឃើញ 2 ខ្នង។

ការគ្រប់គ្រង

  • ចុចប្រអប់ទទេនៅក្នុងក្តារដើម្បីជ្រើសរើសវា — ប្រអប់ដែលបានចាក់សោរួច (ប្រសិនបើមាន) មិនអាចជ្រើសរើសឬផ្លាស់ប្តូរបានទេ។
  • ចុចប៊ូតុងកម្ពស់ពីក្តារលេខនៅក្រោមក្តារល្បែងដើម្បីដាក់កម្ពស់នោះទៅក្នុងប្រអប់ដែលបានជ្រើសរើស។ លើក្តារចុច គ្រាន់តែចុចលេខដែលត្រូវគ្នា (1 ដល់ N)។
  • ដាក់ខុសហើយមែនទេ? ចុច "លុប" (ឬចុច Backspace/Delete) ដើម្បីសម្អាតប្រអប់ដែលបានជ្រើសរើស ហើយសាកល្បងកម្ពស់ផ្សេងទៀត។
  • លេខតម្រុយនៅជុំវិញក្រៅក្តារត្រូវបានបង្ហាញជាពណ៌លឿងទឹកឃ្មុំតូចជាង ដើម្បីឱ្យអ្នកអាចញែកបានជានិច្ចពីលេខល្បែងផ្គុំពណ៌សដិតដែលនៅក្នុងក្តារ។

កម្រិតលំបាក

  • ងាយប្រើក្តារ 4×4 តូចប្រកួតប្រជែង។ មានតែ 4 កម្ពស់ត្រូវគ្រប់គ្រង ហើយមានតែ 16 ប្រអប់ត្រូវបំពេញ ធ្វើឱ្យវាជាមធ្យោបាយងាយស្រួលបំផុតដើម្បីរៀនពីរបៀបដែលតម្រុយភាពមើលឃើញដំណើរការ។
  • មធ្យមឡើងទៅជាក្តារ 5×5។ អ្នកត្រូវតាមដានកម្ពស់ខុសគ្នាប្រាំក្នុងជួរដេកនិងជួរឈរប្រាំក្នុងពេលតែមួយ ដូច្នេះការវែកញែកត្រូវការការចងចាំបន្ថែមបន្តិច។
  • ពិបាកប្រើក្តារ 6×6 ពេញលេញ។ រាល់ល្បែងផ្គុំនៅតែត្រូវបានបញ្ជាក់ថាមានចម្លើយត្រឹមតែមួយប៉ុណ្ណោះមុនពេលអ្នកឃើញវា ប៉ុន្តែជាមួយកម្ពស់ប្រាំមួយកំពុងលេង អ្នកនឹងត្រូវផ្សំតម្រុយច្រើន និងផ្ទៀងផ្ទាត់ជួរដេកជាមួយជួរឈរឆ្លងកាត់គ្នាដើម្បីដោះស្រាយវា។

គន្លឹះក្នុងការដោះស្រាយ

  • តម្រុយស្មើនឹង N (ទំហំក្តារ) មានន័យថាបន្ទាត់ទាំងមូលនោះត្រូវរៀបតាមលំដាប់កើនឡើងយ៉ាងតឹងរ៉ឹងឆ្ងាយពីគែមនោះ — អគារនីមួយៗខ្ពស់ជាងខ្នងមុន ដូច្នេះខ្នងនីមួយៗសុទ្ធតែមើលឃើញ។
  • តម្រុយ 1 មានន័យថាអគារដំបូងគេនៅក្នុងបន្ទាត់មើលនោះត្រូវតែជាកម្ពស់ខ្ពស់បំផុតដែលអាចមាន (N) — គ្មានអគារផ្សេងទៀតនៅក្នុងបន្ទាត់នោះអាចត្រូវបានមើលឃើញហួសពីវាបានទេ ព្រោះវាបានក្លាយជាតម្លៃអតិបរមារួចហើយ។
  • ប្រៀបធៀបតម្រុយនៃជួរដេកឬជួរឈរតែមួយពីទិសទាំងពីរ (ឆ្វេងនិងស្តាំ ឬលើនិងក្រោម) — នៅពេលរួមបញ្ចូលគ្នា ជារឿយៗវាកំណត់ច្បាស់ថាតើអគារខ្ពស់បំផុតនិងទាបបំផុតនៅក្នុងបន្ទាត់នោះត្រូវនៅត្រង់ណា។
  • ដោះស្រាយតម្រុយដែលមានកម្រិតកម្រិតខ្ពស់បំផុតជាមុនសិន — តម្រុយតូចៗ (ដូចជា 1 ឬ 2) និងតម្រុយស្មើនឹង N មានឥទ្ធិពលខ្លាំងបំផុត ព្រោះវាបង្ខំកម្ពស់ជាក់លាក់ឱ្យស្ថិតនៅទីតាំងជាក់លាក់ភ្លាមៗ ហើយទីតាំងទាំងនោះក៏ជួយអ្នកឱ្យវែកញែកចំណែកនៅសល់នៃជួរដេកឬជួរឈរតាមរយៈច្បាប់ការេឡាតាំងធម្មតា។

ការគិតពិន្ទុ និងក្តារពិន្ទុនាំមុខ

រាល់ល្បែងផ្គុំដែលដោះស្រាយបានទទួលពិន្ទុ max(1, min(99999, 10000 − វិនាទី × 5 − កំហុស × 200))។ អ្នកចាប់ផ្តើមពី 10000 ពិន្ទុ; រាល់វិនាទីដែលកន្លងទៅចំណាយអស់ 5 ពិន្ទុ ហើយរាល់ការដាក់កម្ពស់ខុសចំណាយអស់ 200 ពិន្ទុ។ ដូច្នេះកាន់តែដោះស្រាយលឿននិងស្អាត ពិន្ទុរបស់អ្នកកាន់តែខ្ពស់ ដោយតែងតែស្ថិតនៅចន្លោះ 1 និង 99,999។ ពិន្ទុត្រូវបានកត់ត្រាដាច់ដោយឡែកសម្រាប់ទំហំក្តារនីមួយៗ — ចូលគណនីដើម្បីរក្សាទុកលទ្ធផលល្អបំផុតរបស់អ្នកទៅក្តារពិន្ទុនាំមុខ ហើយសាកល្បងល្បែងផ្គុំ "រាល់ថ្ងៃ" សម្រាប់ការប្រកួតប្រជែងថ្មីដែលដូចគ្នាសម្រាប់អ្នកគ្រប់គ្នារាល់ថ្ងៃ។

សំណួរដែលសួរញឹកញាប់

តើល្បែងផ្គុំនីមួយៗប្រាកដជាមានចម្លើយដែរឬទេ ហើយចម្លើយនោះមានតែមួយឬ?

ត្រូវហើយ។ ល្បែងផ្គុំអគារខ្ពស់នីមួយៗត្រូវបានបង្កើតចេញពីក្តារពិតដែលបានដោះស្រាយពេញលេញ ហើយបន្ទាប់មកត្រូវបានពិនិត្យដោយកម្មវិធីដោះស្រាយមុនពេលអ្នកឃើញវា ដែលបញ្ជាក់ថាមានក្តារត្រឹមតែមួយប៉ុណ្ណោះដែលបំពេញលក្ខខណ្ឌតម្រុយទាំងអស់ដែលបានបង្ហាញ។ អ្នកមិនចាំបាច់ទាយទេ — តក្កវិជ្ជាតែម្នាក់ឯងគឺគ្រប់គ្រាន់ជានិច្ច។

តើអ្វីត្រូវបានចាត់ទុកជា "កំហុស"?

ការដាក់កម្ពស់ក្នុងប្រអប់ដែលមិនត្រូវនឹងចម្លើយដែលលាក់នៃល្បែងផ្គុំត្រូវបានចាត់ទុកជាកំហុសមួយ។ ប្រអប់នោះនឹងប្រែជាពណ៌ក្រហមភ្លាមៗ ដើម្បីឱ្យអ្នកមើលឃើញភ្លាមៗ; អ្នកអាចលុបហើយសាកល្បងម្តងទៀត ប៉ុន្តែកំហុសនីមួយៗនឹងបន្ថយពិន្ទុចុងក្រោយរបស់អ្នក 200 ពិន្ទុ។

តើអគារខ្ពស់ខុសពីស៊ូដូគុយ៉ាងណា?

ទាំងពីរប្រើច្បាប់ "គ្មានការជាន់គ្នានៅក្នុងជួរដេកឬជួរឈរណាមួយ" ដូចគ្នា ប៉ុន្តែស៊ូដូគុថែមទាំងបែងចែកក្តារជាប្រអប់តូចៗដែលនីមួយៗត្រូវមានលេខគ្រប់ចំនួនម្តងគត់ ខណៈអគារខ្ពស់គ្មានប្រអប់តូចទាល់តែសោះ។ ជំនួសមកវិញ អគារខ្ពស់បន្ថែមតម្រុយភាពមើលឃើញនៅគែម ដែលជាទម្រង់វែកញែកខុសគ្នាទាំងស្រុង — អ្នកកំពុងវែកញែកអំពីបន្ទាត់មើលនិងកម្ពស់អគារ មិនមែនអំពីក្តារតូចទេ។

ហេតុអ្វីបានជាគែមខ្លះជុំវិញក្តារត្រូវបានទុកឱ្យទទេ?

មិនមែនគ្រប់តម្រុយដែលអាចមានទាំងអស់សុទ្ធតែចាំបាច់ដើម្បីចាក់សោក្តារឱ្យមានចម្លើយតែមួយគត់នោះទេ ដូច្នេះកម្មវិធីបង្កើតល្បែងផ្គុំលាក់តម្រុយឱ្យបានច្រើនតាមដែលអាចធ្វើទៅបានដោយសុវត្ថិភាព ខណៈតែងតែបញ្ជាក់ថាតម្រុយដែលនៅសល់ទុកចម្លើយត្រឹមត្រូវតែមួយប៉ុណ្ណោះ។ គែមទទេគ្រាន់តែមានន័យថាបន្ទាត់នោះគ្មានតម្រុយភាពមើលឃើញបង្ហាញទេ — អ្នកនៅតែត្រូវបំពេញវាឱ្យត្រឹមត្រូវដោយប្រើច្បាប់ការេឡាតាំង និងតម្រុយផ្សេងទៀតដែលពាក់ព័ន្ធ។

តើប៊ូតុង "រាល់ថ្ងៃ" ធ្វើអ្វី?

វានឹងផ្ទុកល្បែងផ្គុំពិសេសមួយដែលបានបង្កើតឡើងពីកាលបរិច្ឆេទប្រតិទិន UTC បច្ចុប្បន្ន ដូច្នេះអ្នកលេងគ្រប់គ្នាទូទាំងពិភពលោកដែលចុច "រាល់ថ្ងៃ" នៅថ្ងៃដូចគ្នា នឹងទទួលបានក្តារនិងតម្រុយដូចគ្នាបេះបិទនៅទំហំក្តារដែលបានជ្រើសរើស។ វាជាមធ្យោបាយសប្បាយក្នុងការប្រៀបធៀបពេលវេលាដោះស្រាយរបស់អ្នកជាមួយមិត្តភក្តិ ព្រោះអ្នកទាំងអស់គ្នាកំពុងដោះស្រាយល្បែងផ្គុំដូចគ្នា។

តើខ្ញុំអាចលេងអគារខ្ពស់ដោយគ្មានអ៊ីនធឺណិតបានទេ?

បាន។ នៅពេលទំព័របានផ្ទុករួច អគារខ្ពស់ដំណើរការទាំងស្រុងនៅក្នុងកម្មវិធីរុករករបស់អ្នកដោយមិនចាំបាច់ភ្ជាប់អ៊ីនធឺណិតដើម្បីបង្កើតឬដោះស្រាយល្បែងផ្គុំឡើយ។ ពិន្ទុដែលអ្នកទទួលបានពេលគ្មានអ៊ីនធឺណិតត្រូវបានរក្សាទុកលើឧបករណ៍របស់អ្នក ហើយនឹងផ្ទុកឡើងដោយស្វ័យប្រវត្តិនៅពេលអ្នកមានអ៊ីនធឺណិតវិញ និងបានចូលគណនី។