Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Satu artikel untuk menyelesaikan masalah cincin Joseph (versi PHP)

Satu artikel untuk menyelesaikan masalah cincin Joseph (versi PHP)

藏色散人
藏色散人ke hadapan
2021-12-31 15:19:564122semak imbas

Artikel ini akan memperkenalkan kepada anda versi PHP masalah Joseph Ring (monyet memilih raja). Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

Masalah Joseph Ring (Monyet Memilih Raja) Versi PHP

Masalah Josephus kadangkala digambarkan sebagai monyet memilih masalah raja, dan tajuknya adalah seperti berikut. (Asal usul masalah Yusuf akan disiarkan di penghujung)

Sekumpulan monyet berbaris dalam bulatan dan dinomborkan mengikut 1, 2,...,n.

Kemudian mula mengira dari yang pertama, mengira ke yang ke-1, menendangnya keluar dari bulatan, mula mengira dari belakangnya, mengira ke yang ke-1 lagi, menendangnya keluar..., dan seterusnya Ini berterusan sehingga hanya tinggal seekor monyet, dan monyet itu dipanggil raja.

Memerlukan pengaturcaraan untuk mensimulasikan proses ini, memasukkan m, n, dan mengeluarkan nombor raja terakhir.

Gunakan program untuk mensimulasikan proses ini ditambah:

function monkeyKing($n, $m)
{
    $arr = range(1, $n);       //构造一个数组
    $i = 1;                         //从第一个开始循环
    while (count($arr) > 1) {       //如果总数大于1
        if ($i % $m != 0) {
            $arr[] = $arr[$i - 1];  //不被踢出则压入数组尾部
        }
        unset($arr[$i - 1]);        //压入数组然后删除
        $i++;                       //继续循环
    }
    return $arr[$i - 1];            //直至最后剩下一个为大王
}
print_r(monkeyKing(5, 3));         //第4只为大王

Asal usul Josephus Soalan:

 $n = 5
 $m = 3
 $arr = [1, 2, 3, 4, 5]
 $i   $arr
 ---+------------------------
 1    x 2 3 4 5 1
 2    x x 3 4 5 1 2
>3    x x x 4 5 1 2
 4    x x x x 5 1 2 4
 5    x x x x x 1 2 4 5
>6    x x x x x x 2 4 5
 7    x x x x x x x 4 5 2
 8    x x x x x x x x 5 2 4
>9    x x x x x x x x x 2 4
 10   x x x x x x x x x x 4 2
 11   x x x x x x x x x x x 2 4
>12   x x x x x x x x x x x x 4
Soalan ini dinamakan sempena Flavio Josephus, seorang ahli sejarah Yahudi abad ke-1. Dia menulis dalam diarinya bahawa dia dan 40 rakannya telah dikelilingi oleh tentera Rom di dalam gua. Mereka berbincang sama ada mahu membunuh diri atau ditangkap, dan akhirnya memutuskan untuk membunuh diri, dan memutuskan siapa yang akan membunuh siapa dengan membuat undian. Josephus dan seorang lelaki lain adalah dua orang terakhir yang tinggal. Josephus meyakinkan lelaki itu bahawa mereka akan menyerah diri kepada tentera Rom dan tidak membunuh diri lagi. Josephus mengaitkan kelangsungan hidupnya dengan nasib atau rezeki, dia tidak tahu yang mana.

Pembelajaran yang disyorkan: "

Tutorial Video PHP

"

Atas ialah kandungan terperinci Satu artikel untuk menyelesaikan masalah cincin Joseph (versi PHP). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:awaimai.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam