Задача: дано число N, далее N строк — имена, затем ещё одна строка со значением name_to_find. Нужно посчитать, сколько раз встречается name_to_find в массиве имен.
Пошаговое решение (пояснение по шагам)
- Прочитать N — число строк в массиве.
- Прочитать N строк и сохранить их в массив (например, names).
- Прочитать целевую строку target — имя, которое ищем.
- Пройтись по всем элементам массива и считать тех, которые равны target.
- Вывести полученное количество.
Дополнительно
- По умолчанию сравнение учитывает регистр (без преобразований). Если нужно игнорировать регистр, можно привести и элементы массива, и target к одному регистру (например, к нижнему) и сравнивать.
- Время выполнения: O(N). Потребная память: O(N) для хранения массива строк (если хотите экономить память, можно считать на этапе чтения, но здесь target известен только после прочтения N строк, поэтому проще хранить массив).
Пример
- Ввод: 6 Alex Maria Ivan Alex Petr Alex Alex
- Вывод: 3 (имя target = Alex встречается 3 раза)
Псевдокод read N names = пустой список for i = 1..N: read s append s к names read target count = 0 for each x в names: if x == target: count += 1 print count
Пример реализации на Python (ясный и компактный) def count_occurrences(): N = int(input()) names = [input().strip() for _ in range(N)] target = input().strip() count = sum(1 for x in names if x == target) print(count)
Если нужно привести к однообразному регистру (чтобы считать без учёта регистра): def count_occurrences_case_insensitive(): N = int(input()) names = [input().strip().lower() for _ in range(N)] target = input().strip().lower() count = sum(1 for x in names if x == target) print(count)
Пример реализации на C++ #include <bits/stdc++.h> using namespace std;
int main() { ios::sync_with_stdio(false); cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
string s;
vector<string> names;
names.reserve(N);
string dummy;
getline(cin, dummy); // пропустим остаток строки после N
for (int i = 0; i < N; ++i) {
getline(cin, s);
names.push_back(s);
}
string target;
getline(cin, target);
int count = 0;
for (const auto& x : names) {
if (x == target) ++count;
}
cout << count << "\n";
return 0;
}
Если хотите, могу адаптировать решение под конкретный язык программирования или формат входных данных (например, если имена могут содержать пробелы или если ввод идёт через файл).