Задачи
April 23, 2022

Задача. Семь раз отмерь, один раз отрежь

Задача: дан прямоугольный металлический лист. Необходимо сделать 3 одинаковых квадратных листа металла. Из основного куска можно вырезать квадраты, стороны которого должны быть параллельны сторонам листа.
Необходимо определить максимально возможный размер квадратов, которые можно вырезать из исходного листа металла.

Входные данные: width, height - ширина и высота куска металла.

Вывод: наибольшая длина стороны квадратов

Примеры:

  1. width = 297; height = 210
    Output: 105
  2. width = 250; height = 100
    Output: 83.33

Разбор

повернем наш лист так, чтобы ширина была не меньше высоты. Рассмотрим возможные варианты расположения трех квадратов:

1. Сторона квадрата равна h/2

2. В случае когда, width < 3*height, сторона квадрата будет равна (width / 3)

3. Для случая width >= 3*height, сторона квадрата будет равна height

Среди трех случаев нужно выбрать максимально возможную длину стороны квадрата.

  • При width >= 3*height первый и третий случай можно обьеденить и получим формулу для стороны квадрата: max (height/2, height) = height
  • При width < 3*height обьеденяем первый и второй случаи и получаем формулу для стороны квадрата: max (height/2, width/3).

Реализация

Play-test

https://dotnetfiddle.net/x8uerf