В магазине продается мастика в ящиках по 15 кг, 17 кг, 21 кг. Как купить ровно 185 кг мастики, не вскрывая...

Тематика Информатика
Уровень 5 - 9 классы
int weights[] int n weights weights 17 weights BOX WEIGHTS TARGET WEIGHT мастика покупка комбинации программа на C задачи на программирование вес ящиков
0

В магазине продается мастика в ящиках по 15 кг, 17 кг, 21 кг. Как купить ровно 185 кг мастики, не вскрывая ящики? Сколькими способами можно это сделать?

Напишите пожалуйста программу на языке C

avatar
задан 4 месяца назад

3 Ответа

0

Для решения данной задачи можно воспользоваться методом динамического программирования.

Программа на языке C:

#include 

int countWays(int totalWeight, int weights[], int n) {
    int dp[totalWeight + 1];
    for (int i = 0; i 

avatar
ответил 4 месяца назад
0

Для того чтобы купить ровно 185 кг мастики, не вскрывая ящики по 15 кг, 17 кг и 21 кг, нужно решить следующую задачу: найти все возможные комбинации ящиков, которые в сумме дадут 185 кг.

Обозначим количество ящиков по 15 кг как x, по 17 кг как y, и по 21 кг как z. Нам нужно найти все целые неотрицательные решения уравнения:

[ 15x + 17y + 21z = 185 ]

Рассмотрим шаги решения этой задачи:

  1. Перебор всех возможных значений: Поскольку мы не можем вскрывать ящики, мы будем использовать полный перебор всех возможных комбинаций x, y и z для нахождения всех решений.
  2. Проверка решения: Для каждой комбинации значений x, y и z будем проверять, удовлетворяет ли она уравнению ( 15x + 17y + 21z = 185 ).
  3. Вывод всех решений: Отобразим все найденные комбинации.

Ниже приведен пример программы на языке C, которая решает эту задачу:

#include 

int main() {
    int x, y, z;
    int count = 0;

    // Перебираем все возможные значения x, y и z
    for (x = 0; x 

avatar
ответил 4 месяца назад
0

Для решения этой задачи можно воспользоваться методом динамического программирования. Вот пример программы на языке C, которая решает данную задачу:

#include 

int main() {
    int weights[] = {15, 17, 21};
    int target = 185;
    int dp[target+1];
    dp[0] = 1;
    
    for (int i = 1; i = 0) {
                dp[i] += dp[i - weights[j]];
            }
        }
    }
    
    printf("Количество способов: %d\n", dp[target]);
    
    return 0;
}

Эта программа находит количество способов купить ровно 185 кг мастики, не вскрывая ящики, используя ящики весом 15 кг, 17 кг и 21 кг.

avatar
ответил 4 месяца назад

Ваш ответ

Вопросы по теме