A - 2Char
Posted yishuda
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A - 2Char相关的知识,希望对你有一定的参考价值。
题意:
给你n个字符串。在任意字符串组合中,找到符合要求的组合字符串的最大长度。组合字符串中的不同字母的个数不能超过2个既符合要求。
思路:
由于字符串的总长不会超过1000,采用暴力即可。我们遍历26个字母中任意两个(可重复)命名为a,b,然后遍历n个字符串,如果字符串中只包含a,b那么它的长度就可以累加到答案里面。最后对每一次遍历后的结果取最大值,即需要的结果。复杂度为26*26*1000
代码:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int n,ans; string s[110]; int main(){ cin>>n; for (int i=1; i<=n; i++) cin>>s[i]; for (int i=0; i<26; i++) { for (int j=i; j<26; j++) { char a=‘a‘+i,b=‘a‘+j; //在26个字母中任选两个命名a,b,包括重复。 int res=0; for (int k=1; k<=n; k++) {//遍历字符串数组 int flag=1; for (int l=0; l<s[k].length(); l++) { if (s[k][l]!=a&&s[k][l]!=b) { flag=0;break; } } if (flag) res+=s[k].length();//如果这个字符串仅包含a,b。那么就符合条件。 } ans=max(ans, res);//对每一次匹配字母最后得到的res 取最大值ans。 } } cout<<ans<<endl; }
以上是关于A - 2Char的主要内容,如果未能解决你的问题,请参考以下文章