[伯俊/1759]パスワードの作成


白駿1759-パスワードの作成


質問元:白駿1759
指定されたアルファベットを使用して条件を満たすパスワードを作成する問題
条件:完了したパスワードを昇順で表示する必要があります.
abcはできますが、bacはできません.

プールとコード


DFSを使用してアルファベットを追加し、所定の長さに達したときに出力します.
アルファベットを事前にソートし、現在の長さと現在のアルファベットをdfs関数に渡します.
現在のアルファベット値より後のアルファベットのみを追加できます.
#include<bits/stdc++.h>
using namespace std;
string str;
int L,C;
char mm[5]={'a','e','i','o','u'};
string tmp;
void dfs(int len,int position){
	if(len>=L){
		int mm_cnt=0;
			for(int i=0;i<L;i++){
				if (tmp[i] == 'a' || tmp[i] == 'e' || tmp[i] == 'i'
				|| tmp[i] == 'o' || tmp[i] == 'u'){
				mm_cnt++;
			}
			}
		if(mm_cnt>=1 && tmp.size()-mm_cnt>=2){
			cout<<tmp<<endl;
		}
	
		return;
	}
	for(int i=position;i<C;i++){
			tmp.push_back(str[i]);
			dfs(len+1,i+1);
			tmp.pop_back();
	}
}
int main(){
	ios_base::sync_with_stdio(false);
	
	cin>>L>>C;
	for(int i=0;i<C;i++){
		char tmp;
		cin>>tmp;
		str.push_back(tmp);
	}
	
	sort(str.begin(),str.end());
	cout<<str<<endl;

	dfs(0,0);
	
	return 0;
}