A 小信选字母
题意:n个小写字母字符串(每个字母每个字符串最多出现1次) 随便挑其中几个字符串,使出现k次的字符数最大化
范围及限制:时间:1s 空间:256M 对于100%的数据,1≤n≤15,1≤k≤n。
思路:深搜出选还是不选,2^15铁过1s
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k;
char a[20][30];
int tt[30],ans;
void dfs(int x){
int xl=strlen(a[x]);
if(x>n){
int cnt=0;
for(int i=0;i<=25;i++){
if(tt[i]==k){
cnt++;
}
}
ans=max(ans,cnt);
return;
}
for(int i=0;i<xl;i++){
tt[a[x][i]-'a']++;
}
dfs(x+1);
for(int i=0;i<xl;i++){
tt[a[x][i]-'a']--;
}
dfs(x+1);
}
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++){
scanf("%s",&a[i]);
}
dfs(0);
printf("%d",ans);
return 0;
}
(题解写这么水->题本身就水->只有我最水因为这么水的题没过QwQ)