假设我想要找到所有5个单位数,非重复数的集合,最多可加30个…我最终会得到[9,8,7,5,1],[9,7],4,2],6,3],3]和[8,4].这些集合中的每一个都包含5个非重复数字,最多可加30,即给定的总和.
@H_502_10@
一种天真的方法是将变量从12345增加到98765并仅在它具有唯一数字并且数字总和为30时才选择它:
任何帮助将不胜感激.即使只是我使用的起点也会很棒.
我想出了一个方法,这似乎是一个很长的路要走:得到所有唯一的5位数字(12345,12346,12347等),加上数字,看看它是否等于给定的总和(例如30).如果是,请将其添加到可能的匹配集列表中.
我这样做是为了个人项目,这将帮助我解决Kakuro难题,而不是立即解决整个问题.是的,它可能是作弊,但是……它不是那么糟糕……:P
for($i=12345;$i<98765;$i++) { $arr = preg_split('//',strval($i)); if(count(array_unique($arr)) == count($arr) && array_sum($arr) == 30) echo $i."\n"; }