@MaxLich
java developer

Как проверить, можно ли из кирпичей разного размера составить цепочку нужной длины?

Здравствуйте. Пытаюсь решить задачу makeBricks на codingbat.com. И пока не могу понять, как это можно решить без циклов. Условие задачи:
We want to make a row of bricks that is goal inches long. We have a number of small bricks (1 inch each) and big bricks (5 inches each). Return true if it is possible to make the goal by choosing from the given bricks. This is a little harder than it looks and can be done without any loops.

makeBricks(3, 1, 8) → true
makeBricks(3, 1, 9) → false
makeBricks(3, 2, 10) → true

Мне нужны именно подсказки, а не готовые решения (готовые решения я и сам могу нагуглить, но хочется решить задачу самому).

ЗЫ Пока удалось решить задачу с двумя циклами. Пробовал с использованием рекурсии, но если входящие числа большие, то падает с переполнением стека.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
Young_khv
@Young_khv
ASP.NET Developer
Вам нужно сравнить сколько целых больших нужно для заданной длины и есть ли у вас достаточное количество маленьких, чтобы "добить" до нужного количества

spoiler
public class HelloWorld{

     public static void main(String []args){
        System.out.println(calc(3, 1, 8));
        System.out.println(calc(3, 1, 9));
        System.out.println(calc(3, 2, 10));
     }
     
     public static boolean calc(int small, int big, int len){
         int xxx = len / 5;
         int yyy = len % 5;
         
         return xxx <= big && yyy <= small;
     }
}

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
я дико извиняюсь :-D

// зачем тебе подсказки, если ты можешь нагуглить готовое решение сам? потом прогонишь его в обратном порядке - получишь подсказки, составишь некоторые "паттерны" решения подобных задач, найдешь другие задачи и попробуешь решить. сходишь на тостер написать куцое описание вопроса (да, ты даже не указал, что за аргументы у makeBricks и в каком они порядке), получишь снова ссылку на готовые решения и круг замкнется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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