>백엔드 개발 >PHP 문제 >PHP에서 모든 배열 하위 집합을 찾는 방법

PHP에서 모든 배열 하위 집합을 찾는 방법

zbt
zbt원래의
2023-07-05 13:30:011320검색

모든 배열 하위 집합을 찾는 PHP 방법: 1. 큰 문제를 여러 개의 작은 문제로 분할하는 재귀 방법을 사용한 다음 각각의 작은 문제에 동일한 처리 방법을 적용하고 마지막으로 모든 작은 문제를 결합합니다. 비트 연산을 사용하고 먼저 결과를 빈 배열로 초기화한 다음 루프를 사용하여 0부터 2까지의 모든 숫자를 n승 -1까지 순회합니다. 각 숫자는 하위 집합을 나타냅니다. 내부 루프에서는 비트 연산을 사용하여 현재 위치가 선택되었는지 여부를 결정합니다. 선택하면 해당 비트가 있는 요소가 하위 집합에 추가됩니다. 마지막으로 결과 배열에 하위 집합을 추가합니다.

PHP에서 모든 배열 하위 집합을 찾는 방법

이 튜토리얼의 운영 환경: windows10 시스템, php8.1.3 버전, DELL G3 컴퓨터.

PHP 개발에서 배열은 관련 데이터 세트를 저장하는 데 사용할 수 있는 매우 일반적으로 사용되는 데이터 구조입니다. 때로는 배열의 모든 하위 집합을 찾아야 하는 경우가 있습니다. 즉, 원래 배열의 요소 수에 관계없이 구성된 새 배열을 선택해야 합니다. 이 기사에서는 PHP를 사용하여 배열의 모든 하위 집합을 찾는 방법을 소개합니다.

먼저 개념을 명확히 해야 합니다. 배열의 하위 집합은 원래 배열에서 무작위로 선택된 0개 이상의 요소로 구성된 새 배열을 나타냅니다. 예를 들어 원래 배열 [1, 2, 3]의 하위 집합은 [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3].

아래에서는 배열의 모든 하위 집합을 찾는 데 일반적으로 사용되는 두 가지 방법을 소개합니다.

1. 재귀 사용

재귀는 큰 문제를 여러 개의 작은 문제로 나눈 다음 각 작은 문제에 동일한 처리 방법을 적용하고 마지막으로 모든 작은 문제에 대한 솔루션을 제공하는 것입니다. 결합됩니다. 이 방법에서는 재귀를 사용하여 배열의 모든 하위 집합을 찾을 수 있습니다.

구체적인 구현은 다음과 같습니다.

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

위 코드에서 첫 번째 초기화 결과는 빈 컬렉션을 포함하는 배열입니다. 그런 다음 원본 배열의 각 요소를 반복하고, 각 요소에 대해 이를 결과 배열의 각 하위 집합에 추가하고, 새 하위 집합을 결과 배열에 추가합니다. 마지막으로 결과 배열이 반환됩니다.

2. 비트 연산 사용

배열의 하위 집합을 풀기 위해 일반적으로 사용되는 또 다른 방법은 비트 연산을 사용하는 것입니다. 배열의 하위 집합은 이진수로 표시될 수 있으므로 각 비트는 해당 위치의 요소가 선택되었는지 여부를 나타냅니다. 예를 들어 [1, 2, 3] 총 3개의 요소가 있습니다. 예를 들어 1은 선택됨을 나타내고 0은 선택되지 않음을 나타냅니다. 따라서 3자리 이진수는 [1, 2, 3]입니다. ]는 이진수 101로 표현될 수 있다.

구체적인 구현은 다음과 같습니다.

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

위 코드에서 첫 번째 초기화 결과는 빈 배열입니다. 그런 다음 루프를 사용하여 0에서 2-1까지의 모든 숫자를 반복합니다. 각 숫자는 하위 집합을 나타냅니다. 내부 루프에서는 비트 연산을 사용하여 현재 위치가 선택되었는지 여부를 결정합니다. 선택되면 해당 위치의 요소가 하위 집합에 추가됩니다. 마지막으로 결과 배열에 하위 집합을 추가합니다. 마지막으로 결과 배열이 반환됩니다.

요약:

이 문서에서는 배열의 모든 하위 집합을 찾는 데 일반적으로 사용되는 두 가지 방법, 즉 재귀 방법과 비트 연산 방법을 소개합니다. 이 두 가지 방법은 기능을 달성하고 특정 효율성을 가질 수 있습니다. 실제 개발에서는 특정 요구 사항에 따라 적절한 방법을 선택하면 됩니다. 이러한 방법을 통해 어레이의 모든 하위 집합을 쉽게 해결할 수 있어 개발 효율성이 향상됩니다

위 내용은 PHP에서 모든 배열 하위 집합을 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.