我将如何对一种方法进行伪编码:
的程序。
^也就是说-假设你有3个六边模,你滚动它们,得到一个4,2和6。你取6的值,因为它是最高的。然后你重新翻滚那是6分的模具。如果你得到一个6,你把这6加到前面的6,然后重新滚。如果没有,只需将最高的模具添加到前面的值中。
发布于 2011-01-12 14:12:01
我想你的问题说明了你觉得这很困难的原因。你试图在一个地方解决太多的问题,而这会变得令人难以抗拒。您不想创建一个方法来完成这个任务。您会想要创建几个。首先,将问题分解为它的组成部分。
注意:我不是以面向对象的方式来处理这个问题,以使这个答案更容易解析。我鼓励你更详细地考虑一下设计。
要求1:卷一种模具-4,6,8,10或12边
好的-所以我们需要一些类似于:
int辊(int边);
基本上,Roll只返回1和边(包括在内)之间的随机值。
要求2:最多可卷取10种此类模具
这可能是一个for循环。
要求3:如果超过一半的模具是1,请打印一条消息,说明它们已失效,并结束了程序。
这一要求意味着您要将每次调用的结果存储在一个集合中,例如,一个列表或一个intarray of integers。
接下来,它表示您正在迭代该集合,并计算为"1“的卷数。如果计数大于滚动总数的一半以上,则结束该程序。计数很容易(因为循环或外汇可能是你最好的选择),而且你知道做了多少卷(既取决于集合中的项目数,又因为你的for循环中有一个计数器,当你制作卷的时候……那就分家比较吧。
要求4:如果任何模具与轧制模具的类型相等,则从组中取最高值。以及重新滚动该模具,该模具的值等于所轧制的模具类型.
再次-您需要迭代结果集并执行操作请求。我不会试图通过将此规则与以前的规则相结合来“优化”您的解决方案--它只会使解决方案变得复杂,而不会带来真正的好处。
发布于 2011-01-12 14:09:39
你的算法必须:
运行总计值。
它没有更多的,然后,实际做它为你。
https://stackoverflow.com/questions/4669557
复制相似问题