Предмет: Информатика, автор: kolazovtij

Рядок складається із груп цифр, розділених довільною кількістю
пробілів. Знайти та вивести на екран найкоротшу групу та
кількість груп такої довжини.
С++

Ответы

Автор ответа: pomogi010
1

Ответ:

Объяснение:

#include <iostream>

#include <string>

#include <unordered_map>

int main() {

std::string line;

std::unordered_map<int, int> group_lengths;

int current_group_length = 0;

std::getline(std::cin, line);

for (char c : line) {

if (std::isdigit(c)) {

// Якщо це цифра, збільшуємо довжину поточної групи

current_group_length++;

} else if (current_group_length > 0) {

// Якщо це не цифра і довжина поточної групи більша ніж 0,

// зберігаємо її у словнику і обнуляємо довжину поточної групи

group_lengths[current_group_length]++;

current_group_length = 0;

}

}

// Якщо є поточна група у рядку, яка не була збережена у словнику

// (наприклад, рядок закінчувався цифрою), то зберігаємо її у словнику

if (current_group_length > 0) {

group_lengths[current_group_length]++;

}

// Шукаємо найкоротшу групу

int min_length = line.length();

for (const auto& [length, count] : group_lengths) {

if (length < min_length) {

min_length = length;

}

}

// Виводимо найкоротшу групу і кількість таких груп

std::cout << "Shortest group length: " << min_length << std::endl;

std::cout << "Number of groups with this length: "

<< group_lengths[min_length] << std::endl;

return 0;

}


sashabobukhh: сам наверное писал
Похожие вопросы
Предмет: Математика, автор: bananfan5656