Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk mencari semua subset tatasusunan dalam php

Bagaimana untuk mencari semua subset tatasusunan dalam php

zbt
Lepaskan: 2023-07-05 13:30:01
asal
1303 orang telah melayarinya

Kaedah

php untuk mencari semua subset tatasusunan: 1. Gunakan kaedah rekursif dengan membahagikan masalah besar kepada beberapa masalah kecil, dan kemudian gunakan kaedah pemprosesan yang sama untuk setiap masalah kecil, dan akhirnya selesaikan semua masalah kecil Gabungkan mereka; Gunakan operasi bit, mula-mula mulakan hasilnya kepada tatasusunan kosong, dan kemudian gunakan gelung untuk merentasi semua nombor dari 0 hingga 2 kepada kuasa ke-1, setiap nombor mewakili subset. Dalam gelung dalaman, operasi bit digunakan untuk menentukan sama ada kedudukan semasa dipilih Jika dipilih, elemen dengan bit yang sepadan ditambah kepada subset. Akhir sekali, tambah subset pada tatasusunan hasil.

Bagaimana untuk mencari semua subset tatasusunan dalam php

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi php8.1.3, komputer DELL G3.

Dalam pembangunan PHP, tatasusunan ialah struktur data yang sangat biasa digunakan, yang boleh digunakan untuk menyimpan satu set data berkaitan. Kadangkala, kita perlu mencari semua subset tatasusunan, iaitu, pilih tatasusunan baharu yang terdiri daripada sebarang bilangan elemen daripada tatasusunan asal. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mencari semua subset tatasusunan.

Pertama sekali, kita perlu menjelaskan konsep: subset tatasusunan merujuk kepada tatasusunan baharu yang terdiri daripada 0 atau lebih elemen yang dipilih secara rawak daripada tatasusunan asal. Sebagai contoh, subset tatasusunan asal [1, 2, 3] ialah: [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3].

Di bawah ini kami akan memperkenalkan dua kaedah yang biasa digunakan untuk mencari semua subset tatasusunan. . digabungkan. Dalam kaedah ini, kita boleh menggunakan rekursi untuk mencari semua subset tatasusunan.

Pelaksanaan khusus adalah seperti berikut:

function subsets($nums) {
$result = [[]]; // 初始化结果,包含一个空集合
foreach ($nums as $num) {
$count = count($result); // 当前结果的数量
for ($i = 0; $i < $count; $i++) {
$newSubset = $result[$i]; // 获取当前结果集合
$newSubset[] = $num; // 加入当前元素
$result[] = $newSubset; // 加入结果数组
}
}
return $result;
}
Salin selepas log masuk
Dalam kod di atas, hasil permulaan pertama ialah tatasusunan yang mengandungi koleksi kosong. Kemudian lelaran melalui setiap elemen dalam tatasusunan asal, dan untuk setiap elemen, tambahkannya pada setiap subset dalam tatasusunan hasil dan tambahkan subset baharu pada tatasusunan hasil. Akhirnya, tatasusunan hasil dikembalikan.

2. Gunakan operasi bitwise

Kaedah lain yang biasa digunakan untuk menyelesaikan subset tatasusunan ialah menggunakan operasi bitwise. Kerana subset tatasusunan boleh diwakili oleh nombor binari, setiap bit menunjukkan sama ada elemen pada kedudukan itu dipilih. Contohnya, [1, 2, 3] Terdapat 3 elemen secara keseluruhan Nombor perduaan 3 digit boleh digunakan untuk mewakili subset Sebagai contoh, 1 mewakili terpilih dan 0 mewakili tidak dipilih ] boleh diwakili oleh nombor binari 101. untuk menyatakan.

Pelaksanaan khusus adalah seperti berikut:

function subsets($nums) {
$result = []; // 初始化结果为空数组
$n = count($nums); // 数组的长度
for ($i = 0; $i < pow(2, $n); $i++) {
$subset = []; // 初始化子集
for ($j = 0; $j < $n; $j++) {
if ($i & (1 << $j)) { // 使用位运算判断该位是否选中
$subset[] = $nums[$j]; // 若选中,则将该元素加入子集
}
}
$result[] = $subset; // 将子集加入结果数组
}
return $result;
}
Salin selepas log masuk
Dalam kod di atas, hasil permulaan pertama ialah tatasusunan kosong. Kemudian gunakan gelung untuk mengulangi semua nombor dari 0 hingga 2-1, dengan setiap nombor mewakili subset. Dalam gelung dalam, operasi bit digunakan untuk menentukan sama ada kedudukan semasa dipilih Jika dipilih, elemen pada kedudukan yang sepadan ditambah kepada subset. Akhir sekali tambah subset pada tatasusunan hasil. Akhirnya, tatasusunan hasil dikembalikan.

Ringkasan:

Artikel ini memperkenalkan dua kaedah yang biasa digunakan untuk mencari semua subset tatasusunan, iaitu kaedah rekursif dan kaedah operasi bitwise. Kedua-dua kaedah ini boleh mencapai fungsi dan mempunyai kecekapan tertentu. Dalam pembangunan sebenar, pilih sahaja kaedah yang sesuai mengikut keperluan tertentu. Melalui kaedah ini, kami boleh menyelesaikan semua subset tatasusunan dengan mudah, dengan itu meningkatkan kecekapan pembangunan

Atas ialah kandungan terperinci Bagaimana untuk mencari semua subset tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan