2015-01-12 2 views
1

Для расчета поверхности я ищу следующее решение.Рассчитать, сколько раз статическое число вписывается в другое число

У меня размер поверхности, такой как 60 м², для этой площади у меня есть 2 вида Размеры материалов. Размер материала 2 м² и 4 м². Задача для меня теперь - , чтобы максимально эффективно вычислить необходимые материалы и свести к минимуму оставшиеся .

Итак, заполнив поверхность площадью 60 м² максимально возможной площадью материалов 4 м² и залейте ее 2 м 2, чтобы сохранить материал до минимума.

+1

Нет смысла без ширины и высоты DATAS. Остальное: 60/4 = 15! Вам нужно 15 блоков из 4m2 ... – Spoke44

+0

Ответ на вопрос о названии и вашем номере: ** вы разделите и округлите **. Если два номера, которые вы хотите вставить в них, не являются кратными друг другу, тогда все становится немного сложнее, но это не то, о чем вы просите. – MvG

+0

Допустим, поверхность 13 м 2. Я знаю, что мне нужны 3x4m2 и 1xm2, чтобы быть эффективными с материалами. Но, чем, перевод на расчет php. – directory

ответ

2

Это просто. С помощью этого метода вы можете использовать любое количество и любой размер материалов.

Храните ваши материалы в массиве. Прокрутите по этому массиву, выполните вычисления и сохраните «остаток» в другой переменной. Если в конце будет некоторый отдых, то добавьте еще 1 из последнего элемента.

$materials = array(2,4,8); 
$surface = 63; 
rsort($materials); 
$rest = $surface; 
$isFinished = false; 
$data = array(); 
foreach ($materials as $material) { 
    $result = $rest/$material; 
    if ($result >= 1) { 
     $data[$material] = floor($result); 
     $rest -= $material * floor($result); 
    } 
} 

if ($rest > 0) { 
    $data[end($materials)]++; 
} 
echo "For a " . $surface . " you need the following materials: <br />"; 
foreach ($data as $key => $val) { 
    echo "Material " . $key . " * " . $val ."<br />"; 
} 

Выход:

For a 63 you need the following materials: 
Material 8 * 7 
Material 4 * 1 
Material 2 * 2 
+0

Кажется, приближается очень близко. Я просто задаюсь вопросом о вычислении поверхности в метрах на метр (м2 - единица). Когда я делаю расчет на поверхности 30 м2, результат - материал 7x4 (м2) и материал 1x2 (м2), что будет слишком большим количеством материалов :) – directory

+0

7 * 4 = 28, 1 * 2 = 2, поэтому 28 +2 = 30. В чем проблема? :) – vaso123

+0

есть 30m2. 1x 4m2 уже 16m2, поэтому 7x16m2 будет слишком много, если я это вижу правильно? – directory

0

Предполагая, что вы используете PHP Это будет начало поиска материала с минимальным уровнем покоя.

function getMinRest($surface, $num1, $num2){ 
    $rest1 = $surface % $num1; 
    $rest2 = $surface % $num2; 
    return $rest2 <= $rest1 ? $num2:$num1; 
} 
Смежные вопросы