Hoon222y

[BOJ 1759] 암호만들기 본문

코딩/BOJ & 알고스팟

[BOJ 1759] 암호만들기

hoon222y 2017. 10. 3. 19:39

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


대표적인 백트레킹(backtracking) 문제라고 볼 수 있다.  해당 문제의 경우 solve의 인자로 현재 위치 , 지금까지 저장 된 str 배열을 사용하였다. 

https://www.acmicpc.net/problem/2661 해당 문제 또한 추천하는 문제라고 하니 풀어보도록 하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <set>
typedef long long ll;
 
using namespace std;
 
int n,m;
char arr[111];
 
void solve(int pos ,  string str , int ja , int mo){
    if(str.size() == n){
        if(ja<2 || mo<1){
            return;
        }
        cout << str <<endl;
    }
    for(int i=pos;i<m;i++){
        if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u'){
            solve(i + 1, str + arr[i], ja, mo + 1);
        }else{
            solve(i + 1, str + arr[i], ja + 1, mo);
        }
    }
}
 
 
 
int main(){
    cin >> n >> m;
    for(int i=0;i<m;i++){
        cin >> arr[i];
    }
    sort(arr,arr+m);
    solve(0,"",0,0);
    return 0;
}
cs


'코딩 > BOJ & 알고스팟' 카테고리의 다른 글

[BOJ 9663] N-Queen  (0) 2017.10.04
[BOJ 11051] 이항계수2  (0) 2017.10.03
[BOJ 2449] 전구  (1) 2017.09.19
[BOJ 2098] 외판원 순회  (0) 2017.09.18
[BOJ 14699] 관악산 등산  (0) 2017.09.16
Comments