首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算一个静态数字符合另一个数字的次数。

计算一个静态数字符合另一个数字的次数。
EN

Stack Overflow用户
提问于 2015-01-12 10:38:57
回答 2查看 1.1K关注 0票数 1

对于表面计算,我正在搜索以下解。

我有一个60平方米的表面尺寸,因为这个正方形有两种材料尺寸。材料尺寸为2平方米和4平方米。对我来说,现在的挑战是尽可能有效地计算所需的材料,并将剩余的材料保持在最低限度。

因此,尽可能用4平方米的材料填充60平方米的表面,并将其填满2平方米,以使材料保持在最低限度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-12 11:19:01

这很简单。用这种方法,你可以使用任何数量和任何大小的材料。

将你的材料存储在一个数组中。循环遍历该数组,进行计算,并将"rest“存储在另一个变量中。如果在最后会有一些休息,那么从最后一项再增加一个。

代码语言:javascript
复制
$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 />";
}

产出如下:

代码语言:javascript
复制
For a 63 you need the following materials:
Material 8 * 7
Material 4 * 1
Material 2 * 2
票数 2
EN

Stack Overflow用户

发布于 2015-01-12 11:18:54

假设您正在使用PHP,这将是一个以最少的休息找到材料的开始。

代码语言:javascript
复制
function getMinRest($surface, $num1, $num2){
  $rest1 = $surface % $num1;
  $rest2 = $surface % $num2;
  return $rest2 <= $rest1 ? $num2:$num1;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27900055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档