Матч
20, Фамилия (Surname)
Каждой фамилии соответствует
число, равное сумме ASCII кодов символов, из которых оно состоит. Массив строк
surnames содержит фамилии, каждая из которых содержит символы ‘A’ – ‘Z’.
Выигрывает тот, чей фамилии соответствует наибольшее число. Вернуть наименьший
индекс выигравшей фамилии.
Класс: Surname
Метод: int
bestSurname(vector <string> surnames)
Ограничения:
address1 и address2 содержат от 0 до 50
символов ‘a’ – ‘z’, ‘A’ – ‘Z’, ‘0’ – ‘9’.
Вход. Массив строк surnames.
Выход. Наименьший индекс фамилии, для которой сумма ASCII кодов
символов наибольшая.
Пример входа
surnames |
{"JONES", "WILLIAMS",
"SMITH", "HARPER"} |
{"JOHNSON", "CHU",
"LOPEZ", "SCAFFIDI", "PASQUALE",
"KRUMME"} |
{"ABA", "BAA", "CAB",
"BAC"} |
Пример выхода
1
4
2
РЕШЕНИЕ
элементарные вычисления
Функция score вычисляет сумму
ASCII кодов символов, из которых состоит строка name. Просматриваем все фамилии, вычисляем для них сумму ASCII
кодов символов и находим индекс index той
фамилии, для которой эта сумма наибольшая.
ПРОГРАММА
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <numeric>
using namespace std;
int score(string name)
{
return accumulate(name.begin(),name.end(),0);
}
int f(string a, string b)
{
return score(a) < score(b);
}
class Surname
{
public:
int bestSurname(vector<string> surnames)
{
return
max_element(surnames.begin(),surnames.end(),f) - surnames.begin();
}
};