본문 바로가기
알고리즘/개념정리

순열조합 코드정리

by 새싹감자 2023. 2. 17.
package algo;

import java.util.Arrays;

public class CombPerm {

	static int numbers[]={1,2,3,4,5} ;
	static int answer[];
	static boolean visit[];
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		answer=new int[2];
		visit=new boolean[5];
		comb(0,0);
		System.out.println("++++++++++++++++++");
		perm(0);
		System.out.println("++++++++++++++++++");
		comb2(0,0);
		System.out.println("++++++++++++++++++");
		perm2(0);

	}
	
	static void comb(int start, int cnt) { //조합
		if(cnt==2) {
			System.out.println(Arrays.toString(answer));
			return;
		}
		
		for(int i=start; i<5; i++) {
			answer[cnt]=numbers[i];
			comb(i+1,cnt+1);
		}
		
	}
	
	static void perm(int cnt) { //순열
		if(cnt==2) {
			System.out.println(Arrays.toString(answer));
			return;
		}
		
		for(int i=0; i<5; i++) {
			if(visit[i]==false) {
				answer[cnt]=numbers[i];
				visit[i]=true;
				perm(cnt+1);
				visit[i]=false;
			}
			
		}
		
	}
	static void comb2(int start, int cnt) { //중복조합
		if(cnt==2) {
			System.out.println(Arrays.toString(answer));
			return;
		}
		
		for(int i=start; i<5; i++) {
			answer[cnt]=numbers[i];
			comb(i,cnt+1);
		}
		
	}
	
	static void perm2(int cnt) { //중복순열
		if(cnt==2) {
			System.out.println(Arrays.toString(answer));
			return;
		}
		
		for(int i=0; i<5; i++) {
			answer[cnt]=numbers[i];
			perm(cnt+1);
			
		}
		
	}

}

'알고리즘 > 개념정리' 카테고리의 다른 글

형 변환, 소숫점 출력  (0) 2023.02.18
해쉬 사용하기, 객체 만들기  (0) 2023.02.17
서로소 집합 만들기  (1) 2022.09.20
순열, 조합  (0) 2022.09.12
자바 정렬하기  (0) 2022.09.12

댓글