자바 는 비트 연산 을 통 해 집합 하 는 모든 부분 집합 방법 을 구한다.
하나의 집합의 모든 부분 집합 은 2^이 집합의 길이 와 같다.예 를 들 어{c,b,a}의 길 이 는 3 이 고 이 집합 부분 은 8 개 입 니 다.
이 말 은 보기 에는 간단 하지만 동시에 심오 한 철 리 를 내포 하고 있다.사실 한 집합의 모든 집합 은 2^이 집합의 길이 라 는 숫자 와 관계 가 있다.예 를 들 어 위의 예,{c,b,a}의 길 이 는 3 이 고 0-7 로 모든 부분 집합 을 표시 할 수 있 습 니 다.다음 과 같이 숫자 에 대응 하 는 위 치 를 1 로 바 꾸 면 이 숫자 가 부분 집합 을 형성 해 야 한 다 는 것 을 의미한다.0-7 의 바 이 너 리 는 마침 완 성 된 것 을 나타 낸다.하나의 길 이 는 3 이 고 부분 집합 개 수 는 8 의 모든 부분 집합 이다.
0(000):{}
1(001):{a}
2(010):{b}
3(011):{ab}
4(100):{c}
5(101):{a,c}
6(110):{b,c}
7(111):{a,b,c}
따라서 위의 규칙 에 따라 코드 는 이렇게 쓸 수 있 습 니 다.먼저 집합 길 이 를 취하 고 2^이 집합 길이 가 얼마 인지 구 할 수 있 습 니 다.예 를 들 어 위의 8,그리고 0 에서 8-1 까지 옮 겨 다 닐 수 있 습 니 다.옮 겨 다 닐 때 0,1,2..................................................................................어 셈 블 리 로 모든 위 치 를 맨 끝으로 옮 기 고 1 의 위치 와 실현 하 며 구체 적 인 코드 는 다음 과 같 습 니 다.
import java.util.ArrayList;
public class getSubSet {
public static ArrayList<ArrayList<Integer>> getSubset(ArrayList<Integer> L) {
if (L.size() > 0) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < Math.pow(2, L.size()); i++) {// =2
ArrayList<Integer> subSet = new ArrayList<Integer>();
int index = i;// 0 2 -1
for (int j = 0; j < L.size(); j++) {
// , 1, ,
if ((index & 1) == 1) {// , 1
subSet.add(L.get(j));
}
index >>= 1;//
}
result.add(subSet); //
}
return result;
} else {
return null;
}
}
public static void main(String[] args) {
ArrayList<Integer> L = new ArrayList<Integer>();
L.add(1);
L.add(2);
L.add(3);
System.out.println(getSubset(L));
}
}
실행 결 과 는 다음 과 같 습 니 다.이상 의 자바 는 비트 연산 을 통 해 하나의 집합 을 구 하 는 모든 부분 집합 방법 은 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 우 리 를 많이 지지 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.