你将得到一个面积为a的油漆。将有12个油漆桶从4个主要 每种颜色有3种色调(即总共12个桶)。桶的大小,或者更具体地说, 可以从每个阴影绘制的区域量在以下数组中给出。 同一原色的不同色调显示在同一行中。在
问题和约束
你需要选择4种颜色的地板
实现一个python程序来解决以下问题
问题1。满足上述约束条件(如果A=100)的色阶(或桶)
问题2。上述情况下的损耗量
问题3。如果A=90,Q1和Q2的解决方案是什么?在
注意:您可以使用下面的符号来引用上面地图中的每个阴影。在
R-行索引
C列索引
(r,c)-(r+1)行和(c+1)列的阴影
e、 g.(0,0)->;12,(0,1)->;23,(1,2)->;15等
这样,Q1的答案可以用格式[(0,1),(1,2),(2,0),(3,2)]
如果用户输入100,系统应显示颜色代码区域,其坐标和最接近100
示例
Enter your Area = 100
100 ~ 101(sum of areas 12+30+35+24, There for 101 is the closet number to 100)
Shades = [12 30 35 24]
Cordinates of shades = (0,0)(1,1)(2,2)(3,1)
这是我的应答码
^{pr2}$输出-:
Enter your Area = 100
sum of shades = 101
minimum wastage = 1
Shades = [12 30 35 24]
Cordinates of shades = ( 0 , 0 )( 1 , 1 )( 2 , 2 )( 3 , 1 )
你可以看到我得到的坐标12 30 35 24
是手动类型的。这不是一个好的编程方法。在
我怎样才能直接得到坐标(用更好的方法)?在
请注意,我已经回答了所有问题。我想要第三季度更好的答案
优化搜索的唯一可能方法是在每次选择后删除重复的和值。很容易检查81个可能的损耗值中存在45个不同的值:
其中几乎有一半在
sum
方面重复,这对于您的计算来说是不必要的权重。但这并不是一个很大的提速。这在很大程度上取决于运行代码的数据的质量,主要是每个列表的值的宽度和列表的数量。在我已经整理了您的代码,使其更加高效和可读:
^{pr2}$代码的“核心”在
get_shades
函数中。我删除了sum(element)
的双重计算,并将双重比较放在一行中以使其更具可读性。顺便说一下,可以用100%函数风格重写get_shades
函数,如下所示:但是,正如你提到的,这还不够。您可能希望通过在每次选择后删除重复的和来减少它:
这是
reduce
方法设计的一个很好的例子。每次迭代后,它取最后一个结果,对下一个项执行计算,并用新结果替换它。可以使用以下方法获取所有可能的45个总和值:并通过以下方法求出所需的最小值:
其中
cmp
是这样定义的:但另一个大问题是:与它们的总和不同,阴影不会保存在内存中。需要额外的函数来保持着色和和之间的映射。这需要先进的处理列表的方法,这种方法似乎相当慢,而不是加速。我把它们排除在范围之外,因为映射需要更困难的算法,而且它们只有在数据大于发布的数据时才有用。在
相关问题 更多 >
编程相关推荐