
解题思路:
用map存字母和出现的次数,然后遍历三个字母数组,如果map值为1,则加三分,为2加1分,否则不加分。
下面是c++代码:
- #include
- #include
- using namespace std;
- int main()
- {
- int n, num, a1 = 0, a2 = 0, a3 = 0;
- cin >> n;
- while (n != 0) {
- a1 = 0, a2 = 0, a3 = 0;
- map
int> mp; - cin >> num;
- string* arr1 = new string[num];
- string* arr2 = new string[num];
- string* arr3 = new string[num];
- for (int i = 0; i < num; i++) {
- cin >> arr1[i];
- mp[arr1[i]]++;
- }for (int i = 0; i < num; i++) {
- cin >> arr2[i];
- mp[arr2[i]]++;
- }for (int i = 0; i < num; i++) {
- cin >> arr3[i];
- mp[arr3[i]]++;
- }
- for (int i = 0; i < num; i++) {
- if (mp[arr1[i]] == 1) {
- a1 += 3;
- }
- else if (mp[arr1[i]] == 2) {
- a1 += 1;
- }
- }for (int i = 0; i < num; i++) {
- if (mp[arr2[i]] == 1) {
- a2 += 3;
- }
- else if (mp[arr2[i]] == 2) {
- a2 += 1;
- }
- }for (int i = 0; i < num; i++) {
- if (mp[arr3[i]] == 1) {
- a3 += 3;
- }
- else if (mp[arr3[i]] == 2) {
- a3 += 1;
- }
- }
- cout << a1 << " " << a2 << " " << a3 << endl;
- n--;
- }
- return 0;
- }