반응형
#include<iostream>
using namespace std;
int n,k;
string arr[50]={"",};
bool alpha[26] = {0, };
int result = 0;
int start(int order, int cnt){
if(cnt==k){
int temp = 0;
for(int i=0; i<n; i++){
bool read = true;
for(int j=4; j<arr[i].size()-4; j++){
if(!alpha[arr[i][j]-'a']){
read = false;
break;
}
}
if(read) temp++;
}
result = max(temp, result);
return 0;
}
for(int i=order+1; i<26; i++){
if(!alpha[i]){
alpha[i] = true;
start(i, cnt+1);
alpha[i] = false;
}
}
return 0;
}
int main(){
cin>>n>>k;
for(int i=0; i<n; i++){
cin>>arr[i];
}
if(k<5){
cout<<0;
return 0;
}
if(k==26){
cout<<n;
return 0;
}
alpha['a'-'a'] = true;
alpha['n'-'a'] = true;
alpha['t'-'a'] = true;
alpha['i'-'a'] = true;
alpha['c'-'a'] = true;
start(0,5);
cout<<result;
return 0;
}
오랜만의 백트래킹....
반응형
'코테' 카테고리의 다른 글
[백준 2339] 석판자르기 c++ (0) | 2021.12.24 |
---|---|
[백준 1300] k번째 수 c++ (0) | 2021.12.23 |
[백준 2343] 기타레슨 c++ (0) | 2021.12.22 |
c++로 코테 풀 때 (1) | 2021.11.02 |
파이썬으로 코테 풀 때 알면 좋은 것들 (0) | 2021.10.14 |