본문 바로가기
알고리즘

[알고리즘] c++ cpp 암호 만들기

by keel_im 2020. 10. 6.
반응형

포인트

1. 조합을 잘 사용할 수 있는가?

2. 문제 조건을 잘 이해 했는가?

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
int n, m;
char map[16];
string s;

bool check(string s) {
	int a=0, b=0;
	for(auto ele: s) {
		if(ele=='a'||ele=='e'||ele=='i'||ele=='o'||ele=='u') {
			a+=1;
		}else {
			b+=1;
		}
	}
	return a >= 1 && b >= 2;
}
void go(int index, int cnt) {
	if(cnt==n) {
		if (check (s)) cout << s << '\n';
		return;
	}

	if (index >= m) return;

	s+=map[index];
	go (index + 1, cnt + 1);
	s.pop_back ();
	
	go (index + 1, cnt);

}

int main() {
	
	cin >> n >> m;
	for(int i=0; i<m;i++) {
		cin >> map[i];
	}
	sort (map, map + m);
	go (0, 0);
	
}
반응형

댓글