tobin

강기호·2022년 10월 7일
0

Algorithm

목록 보기
13/14

문제

두 정수 n, k를 입력받아 k개의 1을 가진 n자리 이진 패턴을 출력하는 프로그램을 작성하세요.


입력
두 정수 n, k가 입력으로 주어진다. ( 0 < n <= 30, 0 <= k < 8 , n >= k )

출력
결과를 내림차순으로 출력한다.

예제 입력
1
예제 출력
10
01

예제 입력
0
예제 출력
00

예제 입력
4 2
예제 출력
1100
1010
1001
0110
0101
0011

#include <stdio.h>
int n , k;
int arr[31]={0};
void result(int id , int num_1){
  if(id == n){
    if(num_1 == k){
      for(int i =0 ; i< n ; i++ ) printf("%d" , arr[i]);
      printf("\n");
    }
    return;
  }
  if(num_1 < k){
    arr[id] = 1;
    result(id+1 , num_1+1);
  }
  arr[id] = 0;
  result(id+1 , num_1);
}
int main() {
  scanf("%d %d" , &n , &k);
  result(0 ,0);
  //Please Enter Your Code Here

  return 0;
}
#include <stdio.h>
int n , k;
int arr[30]={0,};
void getresult(int id , int num_1){
  if(id >= n){
   if(num_1 == k){
     for(int i = 0 ; i < id ; i++) printf("%d" , arr[i]);
     printf("\n");
   }
   return;
  }
  
  if(num_1 < k){
      arr[id] = 1;
      getresult(id+1,num_1+1);
    }
    arr[id] = 0;
    getresult(id+1 , num_1);
}

int main() {


 scanf("%d %d" , &n , &k);
 getresult(0,0);

  return 0;
}

출처

uwaterloo junior contest

0개의 댓글