https://www.acmicpc.net/problem/1759

 

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

#include "bits/stdc++.h"
using namespace std;
//암호 만들기
char arr[15];
int n, m;

void recursive(int start, int cnt1, int cnt2, string str) {
    //printf("==%s %d %d\n", str.c_str(), cnt1, cnt2);
    if (str.size() == n && cnt1 >= 1 && cnt2 >= 2) {
        printf("%s\n", str.c_str());
        return;
    }
   for (int i=start; i<m; i++) {
        //str += arr[i];
        if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') {
            cnt1++;
        }
        else {
            cnt2++;
        }
        recursive(i+1, cnt1, cnt2, str+arr[i]);
        if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') {
            cnt1--;
        }
        else {
            cnt2--;
        }
   }
}

int main() {
   cin >> n >> m;
   for (int i=0; i<m; i++) {
        cin >> arr[i];
   }
   sort(arr, arr + m);
   recursive(0, 0, 0, "");
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 퇴사  (0) 2022.03.19
백준 - 부분수열의 합  (0) 2022.03.19
백준 - 로또  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18

+ Recent posts