Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3540237
А
Аноним
27 декабря 2025 06:10 · публичный вопрос
А
Аноним

Задача 4. Тематика: Основные свойства алгоритма Уровень программы: 9/10 Условие: Фермер Джок все лето выращивал урожай на продажу. Однако вывезти абсолютно все овощи на рынок не…

Запрос пользователя

Задача 4. Тематика: Основные свойства алгоритма Уровень программы: 9/10 Условие: Фермер Джок все лето выращивал урожай на продажу. Однако вывезти абсолютно все овощи на рынок не получится. Он рассчитал, что может унести не более М овощей, при условии что выращено N овощей. При этом стоимость выращенных овощей также отличается, есть дешевые, а есть и дорогие экземпляры. Фермер хочет взять с собой такие овощи, чтобы общая выручка от продажи была максимальная. Формат входных данных. Первый параметр содержит величину N (2 < N < 1000), второй параметр содержит величину М (0 ≤ М ≤ N). Третьим параметром передайте строку, которая содержит N стоимостей каждого овоща. Пример: N =10 M=7 Стоимости - «4,2,16,8,9,22,18,19,10,30» Формат выходных данных. Выведите единственное число - максимальную суммарную стоимость, которую Джэ может выручить от продажи. реши в 1c

Ответ нейросети
27 декабря 2025 06:10

Коротко про решение:

  • Нужно выбрать не более M овощей с максимальной суммой цен.
  • Элементарный способ: отсортировать все N цен по убыванию и суммировать первые M элементов. Если M = 0, сумма 0.
  • Временная сложность: O(N²) при простой сортировке выбора (N ≤ 1000, это непроблема).

Ниже приведён пример решения на 1C:Enterprise (язык 1C). Код делится на три части: разбор входной строки цен в массив чисел, сортировка по убыванию и суммирование первых M элементов.

Пример кода (1C)

Процедура РешениеЗадачи() // Ввод: N, M и строка с ценами, например N = 10; M = 7; СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30";

Результат = МаксимальнаяВыручка(N, M, СтоимостиСтрока);
Сообщить(Результат); // Ожидаемо: 124

КонецПроцедуры

Функция МаксимальнаяВыручка(N, M, СтрокаЦен) // Разобрать строку цен в массив чисел Стоим = РазобратьСтрокуЧисел(СтрокаЦен);

// Корректируем M на случай, если он больше количества цен
Если M > ТЧислоСтрок(Стоим) Тогда
    M = ТЧислоСтрок(Стоим);
КонецЕсли;

// Сортировка по убыванию (селектор-сортировка)
Для i = 0 По ТЧислоСтрок(Стоим) - 1 Цикл
    ИндексМакс = i;
    Для j = i + 1 По ТЧислоСтрок(Стоим) - 1 Цикл
        Если Стоим[j] > Стоим[ИндексМакс] Тогда
            ИндексМакс = j;
        КонецЕсли;
    КонецЦикл;
    // обмен элементов
    Если ИндексМакс <> i Тогда
        Временная = Стоим[i];
        Стоим[i] = Стоим[ИндексМакс];
        Стоим[ИндексМакс] = Временная;
    КонецЕсли;
КонецЦикл;

// Сумма первых M элементов
Сумма = 0;
Для k = 0 По M - 1 Цикл
    Сумма = Сумма + Стоим[k];
КонецЦикл;

Возврат Сумма;

КонецФункции

Функция РазобратьСтрокуЧисел(Строка) // Нормализация разделителей: заменяем запятые и возможные точки с запятыми на пробелы Строка = СтрЗаменить(Строка, ",", " "); Строка = СтрЗаменить(Строка, ";", " ");

Результат = Новый Массив();
ТекСтр = "";
ДлинаСтроки = СтрДлина(Строка);
Для i = 1 По ДлинаСтроки Цикл
    Символ = СтрСред(Строка, i, 1);
    Если СтрЦелое(НайтиЦифру(Символ)) Тогда
        // если символ является цифрой
        ТекСтр = ТекСтр + Символ;
    Иначе
        Если СтрДлина(ТекСтр) > 0 Тогда
            Добавить(Число(ТекСтр), Результат);
            ТекСтр = "";
        КонецЕсли;
    КонецЕсли;
КонецЦикл;
Если СтрДлина(ТекСтр) > 0 Тогда
    Добавить(Число(ТекСтр), Результат);
КонецЕсли;

Возврат Результат;

КонецФункции

Замечания по синтаксису:

  • В 1С:Предприятие синтаксис может зависеть от версии и конфигурации. В примере используются стандартные операции: массивы, цикл «Для ... Цикл», функции СтрЗаменить, СтрСред, СтрДлина, Число, Добавить, Новый Массив и т.д.
  • Разбор строки реализован так, чтобы работать с числами, разделёнными запятыми или точками с запятой и пробелами.
  • Если входные данные будут приходить в виде массива чисел, можно заменить функцию РазобратьСтрокуЧисел на прямое присваивание этого массива — это упрощает код.

Пример работы:

  • Вход: N=10, M=7, СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30"
  • Обработка: восемьонный массив → сортировка по убыванию → сумма первых 7 элементов → 124
  • Вывод: 124

Если хотите, могу адаптировать код под конкретную версию 1С:Предприятие (например 8.3) и под ваш формат входных данных (например, ввод через форму, файл, или параметры функции).