Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法建议_Algorithm - Fatal编程技术网

Algorithm 算法建议

Algorithm 算法建议,algorithm,Algorithm,我正在寻找完成以下任务的最佳方法: 给定4个介于1和9之间的不可重复数字。 给定2个介于1和6之间的数字 将这两个数字(1到6)相加,检查是否有办法使用四个不可重复的数字(1到9)生成相同的数字,此外,您甚至可能不必使用所有四个数字 示例: 您的四个不可重复(1到9)的数字是:2、4、6和7 你的两个介于1和6之间的数字是:3和3 这两个数字的总和为3+3=6 查看四个不可重复(1到9)的数字,您可以用两种不同的方式生成6: 2+4=6 6=6 因此,这个示例返回“是的,有一个可能的解决方案”

我正在寻找完成以下任务的最佳方法:

给定4个介于1和9之间的不可重复数字。
给定2个介于1和6之间的数字

将这两个数字(1到6)相加,检查是否有办法使用四个不可重复的数字(1到9)生成相同的数字,此外,您甚至可能不必使用所有四个数字

示例:
您的四个不可重复(1到9)的数字是:2、4、6和7
你的两个介于1和6之间的数字是:3和3

这两个数字的总和为3+3=6

查看四个不可重复(1到9)的数字,您可以用两种不同的方式生成6:
2+4=6
6=6

因此,这个示例返回“是的,有一个可能的解决方案”


我如何以最高效、最干净的方式完成这项任务,以算法为基础。

在此处输入代码,因为此处的元素数为4,所以我们不必担心效率。 只需在0到15之间循环,并将其用作位掩码,以检查可以生成的有效结果。 下面是一段python代码,让您了解这一点

a = [2,4,6,7]
for i in range(16):
    x = i
    ans = 0
    for j in range(4):
        if(x%2):
            ans += a[j]
        x /= 2
    print ans,
02468801279111313151719


这闻起来像家庭作业。到目前为止,您尝试了什么?只有16种可能的4个数字的组合;为什么不简单地循环所有的组合,并测试每一个呢?这是子集求和,根本不是家庭作业,我正在做一个叫做“关上盒子”的小游戏,我在这一部分,我必须确定没有更多的选项/动作了,游戏结束了。我来这里是希望有人能给我最好的方法来做这件事。只要做它,测试它,如果你遇到问题(例如代码不工作或代码太慢),请再次询问。如果你想让你的代码审查也许可以帮助!