-
4-3: k개의 1을 가진 n자리 이진패턴 경우 출력Recursion 2018. 10. 24. 20:15
tobin (tobin.cpp)
문제
두 정수 n, k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력하는 프로그램을 작성하세요.
입력
두 정수 n,k가 입력으로 주어진다. ( 0< n <= 30, 0 <= k < 8 , n>=k )
출력
결과를 내림차순으로 출력한다.
예제 입력
2 1
예제 출력
10 01
예제 입력
2 0
예제 출력
00
예제 입력
4 2
예제 출력
1100 1010 1001 0110 0101 0011
import java.util.Scanner;
public class tobin2 {
/**
*
* 문제:
* 두 정수 n, k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력하는 프로그램을 작성하세요.
*
*
* 입력:
* 두 정수 n,k가 입력으로 주어진다. ( 0< n <= 30, 0 <= k < 8 , n>=k )
*
*
* 출력:
* 결과를 내림차순으로 출력한다.
*
* 예제 입력:
* 2 1
*
* 예제 출력:
* 10
* 01
*
* @param args
*/
static int N, K, digits[];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
K = sc.nextInt();
digits = new int[N];
//n is numDigits
//k is target 1s count.
printBinary(0,K);
}
private static void printBinary(int index, int k) {
// if (index == N) return;
if (k==0){
print();
return;
}
if (index == N) return;
//case 1: digit is 1.
digits[index] = 1;
printBinary(index+1, k-1);
//case 0: digit is 0.
digits[index] = 0;
printBinary(index+1, k);
}
private static void print() {
for (int i=0; i< N; i++){
System.out.print(digits[i]);
}
System.out.println();
}
}'Recursion' 카테고리의 다른 글
4-7: 좋은 수열 (0) 2018.10.24 4-6: 단지번호 붙이기 (0) 2018.10.24 4-5: Dessert (0) 2018.10.24 4-4: Division (0) 2018.10.24 4-2: Mountain (0) 2018.10.24