• Home
  • About
    • Develop2r photo

      Develop2r

      안녕하세요 IT 개발자 임기남입니다. 한걸음 한걸음 나아가는 개발자를 꿈꾸고 있습니다.

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects
  • Algorithm

순열과 조합

30 Jun 2020

Reading time ~1 minute

전체코드 : GIthub

순열 : arr배열에서 i개 선택하여 줄세우기

private static void perm(int[] arr, int i, int[] rs, boolean[] visited) {
		// TODO Auto-generated method stub
		if(i==rs.length) {
			System.out.println(Arrays.toString(rs));
			return;
		}
		for (int j = 0; j < arr.length; j++) {
			if(visited[j])
				continue;
			rs[i]=arr[j];
			visited[j]=true;
			perm(arr,i+1,rs,visited);
			visited[j]=false;
			
		}
		
	

중복순열 : arr배열에서 중복가능하게 i개 선택하여 줄세우기

private static void re_perm(int[] arr, int i, int[] rs) {
		// TODO Auto-generated method stub
		if(i==rs.length) {
			System.out.println(Arrays.toString(rs));
			return;
		}
		
		for (int j = 0; j < arr.length; j++) {
			rs[i]=arr[j];
			re_perm(arr,i+1,rs);
		}
		
	}

조합 : arr배열에서 j개 선택

private static void com(int[] arr, int i, int j, int[] rs) {
		// TODO Auto-generated method stub
		if(j==rs.length) {
			System.out.println(Arrays.toString(rs));
			return;
		}
		if(i==arr.length)
			return;
		
		rs[j]=arr[i];
		com(arr,i+1,j+1,rs);
		com(arr,i+1,j,rs);
		
		
	}

중복조합 : arr배열에서 중복가능하게 j개 선택

private static void re_com(int[] arr, int i, int j, int[] rs) {
		// TODO Auto-generated method stub
		if(j==rs.length) {
			System.out.println(Arrays.toString(rs));
			return;
		}
		if(i==arr.length)
			return;
		
		rs[j]=arr[i];
		re_com(arr,i,j+1,rs);
		re_com(arr,i+1,j,rs);
		
	}

부분집합 : 모든 부분집합 선택하기

private static void power(int[] arr, int i, boolean[] bs) {
		// TODO Auto-generated method stub
		if(i==arr.length) {
			for (int j = 0; j < arr.length; j++) {
				if(bs[j])
					System.out.print(arr[j]);
			}
			System.out.println();
			return;
		}
		bs[i]=false;
		power(arr,i+1,bs);
		bs[i]=true;
		power(arr,i+1,bs);
		
		
	}


Combinationpermutationalgorithm Share Tweet +1