Как должен стрелять лучник, чтобы набрать ровно 100 очков? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет, помогите пожалуйста написать программу, которая определяет как должен стрелять лучник, чтобы набрать ровно 100 очков?

Решение задачи: «Как должен стрелять лучник, чтобы набрать ровно 100 очков?»

textual
Листинг программы
#include <iostream>
using namespace std;
 
int m[] = { 40, 35, 27, 22, 19, 13 }, r[100/13+1], ms = sizeof(m)/ sizeof(m[0]);
 
void show(int i) {for(int j=0; j<i; j++) cout<<r[j]<<' '; cout<<'\n';}
 
void f(int s, int i) {
    if (s<0) return; else if (s==0) show(i);
    for(int j=0; j<ms; j++) {r[i]=m[j]; f(s-m[j], i+1);}    
}
 
int main() {f(100,0);}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с консолью и для использования стандартного пространства имен std.
  2. Объявляем массив m типа int с пятью элементами и инициализируем его значениями 40, 35, 27, 22, 19.
  3. Объявляем массив r типа int размером 100/13+1 (13 - это размер массива m) и инициализируем все его элементы нулями.
  4. Объявляем переменную ms, которая хранит количество элементов в массиве m.
  5. Определяем функцию show, которая выводит на экран элементы массива r через пробел.
  6. Определяем функцию f, которая рекурсивно решает поставленную задачу. Если счётчик s меньше нуля, то функция завершается. Если счётчик s равен нулю, то функция вызывает функцию show для вывода результата на экран. В противном случае, в цикле изменяется значение r[i] на очередной элемент массива m, и функция вызывается рекурсивно для вычисления следующего элемента.
  7. В функции main вызывается функция f с аргументами 100 и 0, что инициирует процесс вычислений.
  8. Результатом работы программы будет вывод на экран всех возможных комбинаций элементов массива m, которые в сумме дают 100.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы