Вопрос задан 04.07.2023 в 14:49. Предмет Информатика. Спрашивает Мамаева Алина.

25 баллов даю (там ещё бонусом немного) Напишите прогу на C++ Задана последовательность целых

чисел a1,a2,…,an, в которой каждое число от 1 до 3 включительно. Требуется заменить в ней наименьшее количество чисел так, чтобы все числа в последовательности оказались равны между собой. Входные данные: В первой строке задано целое число n (1≤n≤106). Вторая строка содержит последовательность целых чисел a1,a2,…,an (1≤ai≤3). Выходные данные: Выведите наименьшее количество изменений, которое надо сделать, чтобы уравнять все числа в последовательности.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Макеева Оля.

Код

  • #include <iostream>
  • #include <vector>
  • int main() {
  •    int n;
  •    std::vector<int> sequence;
  •    std::cin >> n;
  •    for(auto i = 0; i < n; ++i) {
  •        int number;
  •        std::cin >> number;
  •        sequence.push_back(number);
  •    }
  •    int as = 0, bs = 0, cs = 0;
  •    for (auto &el : sequence) {
  •        switch (el) {
  •            case 1:
  •                ++as;
  •                break;
  •            case 2:
  •                ++bs;
  •                break;
  •            case 3:
  •                ++cs;
  •                break;
  •            default:
  •                throw std::runtime_error("All elements shall be into [1;3] range.");
  •        }
  •    }
  •    int an_answer = std::min({bs + cs, as + cs, bs + cs});
  •    std::cout << an_answer << std::endl;
  •    return 0;
  • }

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример программы на C++, которая решает данную задачу:

cpp
#include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; std::vector<int> sequence(n); for (int i = 0; i < n; ++i) { std::cin >> sequence[i]; } int count[4] = {0}; // Используем массив для подсчета количества каждого числа (1, 2, 3) for (int num : sequence) { count[num]++; } int maxCount = *std::max_element(count + 1, count + 4); // Находим максимальное количество повторений int changesNeeded = n - maxCount; // Количество изменений - общее количество чисел минус максимальное количество повторений std::cout << changesNeeded << std::endl; return 0; }

Пример входных данных:

8 1 2 3 1 2 1 1 2

Пример выходных данных:

5

Объяснение: В данном случае, наиболее часто встречающееся число - 1 (четыре раза). Чтобы все числа стали одинаковыми, нужно заменить 5 чисел (3 числа 2 и 2 числа 3).

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос