2023.3.19 AM 10:30 by CBJ

遞迴枚舉
//C++ language
#include<iostream>
#include<vector>
using namespace std;
vector<string>v;
int n,k,ans=0,choose[15]={0};
void solve(int x){
if(x==n){
int cnt['z'+1]={0};
for(int i=0;i<n;i++){
if(choose[i]){
for(char c:v[i]) cnt[c]++;
}
}
int tmp=0;
for(int i='a';i<='z';i++){
if(cnt[i]==k) tmp++;
}
ans=max(ans,tmp);
return;
}
choose[x]=1;
solve(x+1);
choose[x]=0;
solve(x+1);
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++){
string s; cin>>s;
v.push_back(s);
}
solve(0);
cout<<ans<<"\n";
return 0;
}

發佈留言