반응형
두 정수 n,k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력
package com.company;
public class Main {
static int N, K;
public static void main(String[] args) {
N=4;
K=2;
int[] arr = new int[K];
combination(arr, 0, N, K,0);
}
public static void combination(int[] arr, int index, int n, int r, int target) {
if(r==0) print(arr, index);
else if (target==n) return;
else {
arr[index] = target;
combination(arr, index+1, n, r-1, target+1);
combination(arr, index, n, r, target+1);
}
}
public static void print(int[] arr, int length) {
for(int i=0; i<length; i++){
System.out.print(arr[i]);
}
System.out.println();
int[] binary = new int[N];
for (int i=0; i<length; i++){
binary[ arr[i] ] = 1;
}
//출력
for(int i = 0; i< N; i++){
System.out.print( binary[i] );
}
System.out.println("");
}
}
01
1100
02
1010
03
1001
12
0110
13
0101
23
0011
public static void combination(int[] arr, int index, int n, int r, int target) {
if(r==0) print(arr, index);
else if (target==n) return;
else {
arr[index] = target;
combination(arr, index+1, n, r-1, target+1);
combination(arr, index, n, r, target+1);
}
}
2019. 10. 10
/q는 r의 초깃값 백업
static void nCr(int n, int r, int q){
if(r==0){
printArr(q);
}else if(n<r){
//말이안됨
return;
}else{
t[r-1] = arr[n-1];
nCr(n-1, r-1, q);
nCr(n-1, r, q);
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
단지번호 붙이기 (0) | 2018.10.10 |
---|---|
[BFS,DFS] 타겟넘버 (0) | 2018.10.09 |
[정렬] 주식가격 (0) | 2018.09.28 |
[정렬] 다리를 지나는 트럭 (0) | 2018.09.28 |
[정렬] 프린터 (0) | 2018.09.26 |