Maison >développement back-end >Problème PHP >Comment trouver tous les sous-ensembles de tableaux en php

Comment trouver tous les sous-ensembles de tableaux en php

zbt
zbtoriginal
2023-07-05 13:30:011320parcourir

Méthode php pour trouver tous les sous-ensembles du tableau : 1. Utilisez la méthode récursive en divisant un gros problème en plusieurs petits problèmes, puis appliquez la même méthode de traitement à chaque petit problème, et enfin résolvez tous les petits problèmes Combinez-les 2. Utilisez des opérations sur les bits, initialisez d'abord le résultat dans un tableau vide, puis utilisez une boucle pour parcourir tous les nombres de 0 à 2 à la nième puissance -1, chaque nombre représente un sous-ensemble. Dans la boucle interne, les opérations sur les bits sont utilisées pour déterminer si la position actuelle est sélectionnée. Si elle est sélectionnée, l'élément avec le bit correspondant est ajouté au sous-ensemble. Enfin, ajoutez le sous-ensemble au tableau de résultats.

Comment trouver tous les sous-ensembles de tableaux en php

L'environnement d'exploitation de ce tutoriel : système windows10, version php8.1.3, ordinateur DELL G3.

Dans le développement PHP, un tableau est une structure de données très couramment utilisée, qui peut être utilisée pour stocker un ensemble de données associées. Parfois, nous devons rechercher tous les sous-ensembles d’un tableau, c’est-à-dire sélectionner un nouveau tableau composé d’un nombre quelconque d’éléments du tableau d’origine. Cet article explique comment utiliser PHP pour rechercher tous les sous-ensembles d'un tableau.

Tout d'abord, nous devons clarifier un concept : un sous-ensemble d'un tableau fait référence à un nouveau tableau composé de 0 ou plusieurs éléments sélectionnés aléatoirement dans le tableau d'origine. Par exemple, les sous-ensembles du tableau d'origine [1, 2, 3] sont : [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3].

Ci-dessous, nous présenterons deux méthodes couramment utilisées pour trouver tous les sous-ensembles d'un tableau.

1. Utiliser la récursion

La récursion est un moyen efficace de résoudre des problèmes. Elle divise un gros problème en plusieurs petits problèmes, puis applique la même méthode de traitement à chaque petit problème, et enfin les solutions à tous les petits problèmes. sont combinés. Dans cette méthode, nous pouvons utiliser la récursion pour trouver tous les sous-ensembles d'un tableau.

L'implémentation spécifique est la suivante :

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;
}

Dans le code ci-dessus, le premier résultat d'initialisation est un tableau contenant une collection vide. Parcourez ensuite chaque élément du tableau d'origine et, pour chaque élément, ajoutez-le à chaque sous-ensemble du tableau de résultats et ajoutez le nouveau sous-ensemble au tableau de résultats. Enfin, le tableau résultat est renvoyé.

2. Utiliser des opérations au niveau du bit

Une autre méthode couramment utilisée pour résoudre un sous-ensemble d'un tableau consiste à utiliser des opérations au niveau du bit. Parce qu'un sous-ensemble d'un tableau peut être représenté par un nombre binaire, dont chaque bit indique si l'élément à cette position est sélectionné. Par exemple, [1, 2, 3] Il y a 3 éléments au total. Un nombre binaire à 3 chiffres peut être utilisé pour représenter le sous-ensemble. Par exemple, 1 représente sélectionné et 0 représente non sélectionné. Par conséquent, le sous-ensemble [1, 3] de [1, 2, 3. ] peut être représenté par le nombre binaire 101. à exprimer.

L'implémentation spécifique est la suivante :

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;
}

Dans le code ci-dessus, le premier résultat d'initialisation est un tableau vide. Utilisez ensuite une boucle pour parcourir tous les nombres de 0 à 2-1, chaque nombre représentant un sous-ensemble. Dans la boucle interne, les opérations sur les bits sont utilisées pour déterminer si la position actuelle est sélectionnée. Si elle est sélectionnée, l'élément à la position correspondante est ajouté au sous-ensemble. Enfin, ajoutez le sous-ensemble au tableau de résultats. Enfin, le tableau résultat est renvoyé.

Résumé :

Cet article présente deux méthodes couramment utilisées pour trouver tous les sous-ensembles d'un tableau, à savoir la méthode récursive et la méthode d'opération au niveau du bit. Ces deux méthodes peuvent à la fois réaliser des fonctions et avoir une certaine efficacité. Dans le développement réel, il suffit de choisir la méthode appropriée en fonction des besoins spécifiques. Grâce à ces méthodes, nous pouvons facilement résoudre tous les sous-ensembles d'un tableau, améliorant ainsi l'efficacité du développement

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn