题目描述:
有一种字符串病毒变异后,可以由两个字符串拼接到一起,组成新的病毒,现在小明得到n个字符串,他想知道,共有多少种拼接方法可以得到新型字符串病毒。新型字符串病毒的特征为:字符'A'和'C'出现的次数为偶数次。
输入:
第一行包含一个数n,表示字符串的数量。
接下来n行每行包含一个字符串。
输出:
输出仅一行,表示可能组合出新型字符串病毒的方案数。
样例输入:
5
ABBCD
BBBAA
D
ABBCA
CCCDA
样例输出:
2
提示(1<n<=10,对于每个字符串长度不超过10)
#include<iostream>
#define MAXSIZE 10
using namespace std;
int AC[MAXSIZE][2] = { 0 };
void getAC(string str, int index) {
int i = 0, len = str.length();
int a=0, c=0;
for (i = 0; i < len; i++) {
if (str[i] == 'A') a += 1;
else if (str[i] == 'C') c += 1;
}
AC[index][0] = a;
AC[index][1] = c;
}
int main() {
string str[10];
int N;
int i = 0, j = 0;
cin >> N;
for (i = 0; i < N; i++) {
cin >> str[i];
getAC(str[i], i);
}
int count = 0;
int a1, a2, c1, c2;
for (i = 0; i < N-1; i++) {
for (j = i + 1; j < N; j++) {
a1 = AC[i][0]; a2 = AC[j][0];
c1 = AC[i][1]; c2 = AC[j][1];
if ((a1 + a2) % 2 == 0 && (c1 + c2) % 2 == 0)//假设出现0也是偶数次
count += 1;
}
}
cout << count << endl;
}