본문 바로가기
IT/BOJ

백준(BOJ) 1759 암호만들기 *

by 빨강자몽 2018. 6. 1.

쉬운 백트레킹 문제입니다.

실수 할 수 있는점은
자음, 모음의 최소 개수가 정해져 있다는점과
입력을 받을때 실수 하지 말아야 한다는 점입니다.


#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <math.h>
#include <queue>
#include <set>
#include <utility>
#include <functional>
#define MAX 75005
#define INF 987654321
#define MOD 1000000007
#pragma warning(disable:4996)
using namespace std;

int n,m;
char arr[20],ans[20],str[10]="aeiou";
bool tf;

void back(int cur,int cnt, int mo, int ja)
{
    if(cnt>n)
        return;
    for(int i=cur;i<m;i++)
    {
        int tmp_mo=mo,tmp_ja=ja;
        ans[cnt]=arr[i];
        
        tf=false;
        for(int k=0;k<5;k++)
            if(ans[cnt]==str[k])
                tf=true;
        if(tf)
            tmp_mo++;
        else
            tmp_ja++;
        
        if(n==cnt&&tmp_mo>=1&&tmp_ja>=2)
            printf("%s\n",ans+1);
        else
            back(i+1,cnt+1,tmp_mo,tmp_ja);
    }
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=0;i<m;i++)
        scanf(" %c",&arr[i]);
    sort(arr,arr+m);
    back(0,1,0,0);
    return 0;
}


'IT > BOJ' 카테고리의 다른 글

백준(BOJ) 1946 신입사원 *  (0) 2018.06.01
백준(BOJ) 2629 부등호 *  (0) 2018.06.01
백준(BOJ) 1720번 타일 코드 ***  (0) 2018.06.01
백준(BOJ) 14501 퇴사 *  (0) 2018.06.01
백준(BOJ) 1126 같은 탑 ***  (0) 2018.06.01