នេះជាបញ្ហាកម្សាន្តផ្នែកសរសេរកម្មវិធី ដែលនិយាយអំពីផ្លែប៉ែឆរ (桃子) និងគ្រាប់ផ្លែប៉ែឆរ (桃核)។ ច្បាប់របស់បញ្ហាមានដូចខាងក្រោម៖

  • នៅដំបូង មានចំនួនប្រាក់ និងចំនួនគ្រាប់មួយចំនួន
  • រាល់ពេលអាចប្រើប្រាក់ 1 យ័ន ដើម្បីទិញផ្លែប៉ែឆរ 1 ផ្លែ ឬប្រើគ្រាប់ 3 គ្រាប់ ដើម្បីប្ដូរយកផ្លែប៉ែឆរ 1 ផ្លែ
  • នៅពេលញ៉ាំផ្លែប៉ែឆរ 1 ផ្លែ នឹងទទួលបានគ្រាប់ 1 គ្រាប់បន្ថែម

គោលដៅចុងក្រោយគឺ៖ ញ៉ាំផ្លែប៉ែឆរឲ្យបានច្រើនបំផុតតាមដែលអាចធ្វើបាន។ ខាងក្រោមនេះជាគំនិតពេញលេញក្នុងការដោះស្រាយ និងកូដគំរូ។

គំនិតក្នុងការដោះស្រាយ

ចំណុចសំខាន់នៃបញ្ហានេះ គឺត្រូវប្រើតម្លៃគ្រាប់ឲ្យបានអស់លទ្ធភាព និងជៀសវាងការខ្ជះខ្ជាយ។ ដំណើរការនីមួយៗមានដូចជា៖

  1. រាល់ជំហាន បម្លែងតម្លៃគ្រាប់ទៅជាប្រាក់ ដើម្បីធានាថាប្រាក់មានច្រើនបំផុត
  2. បើប្រាក់គ្រប់គ្រាន់ អាចទិញផ្លែប៉ែឆរ 1 ផ្លែ ហើយញ៉ាំ
  3. ពេលព្យាយាមទិញមិនអាចបន្តបាន ត្រូវពិនិត្យថា អាច “ប្ដូរបន្ថែមមួយលើក” បានទេ ដើម្បីធានាការប្រើប្រាស់ធនធានឲ្យបានច្រើនបំផុត

កូដកម្មវិធី

ខាងក្រោមនេះជាកូដពេញលេញដែលអនុវត្តដោយ Python៖

money = 10
peach_pits = 0
peaches_eaten = 0

while True:
    money += peach_pits / 3
    peach_pits = 0
    
    if money < 1:
        if money + 1/3 >= 1:
            money += 1/3
            peach_pits -= 1
        else:
            break
    
    money -= 1
    peaches_eaten += 1
    peach_pits += 1

print(f"总共吃了 {peaches_eaten} 个桃子")