n个数开展加减乘除得到m
n个数进行加减乘除得到m
小于四个的数还可以用穷举法,还是比较简单。n比较大的时候就行不通了,这个时候我考虑到了用递归的方法。就是从这n个数中取两个进行加减乘除,把得到的四种结果再分别和从剩余的n-2个数中的一个数再进行加减乘除。如此递归下去,直到这n个数全部进行过计算,最后看得到的结果是否等于m。我试着写了些代码,可是错得一塌糊涂。求正确的代码(c语言)。
------解决方案--------------------
最好先整理出一个所为"算法结构",
这样你再用DELPHI代码实现即可
------解决方案--------------------
和delphi 没关系。。
a-b-c
和a -(b+c) 结果是一样的
这些是需要 做剪枝的。。 能提高一些效率。
象这个问题 目标解空间一定的 主要是 搜索的时候 效率优化
。
------解决方案--------------------
"先枚举某几种形式的算式"
选择有效的方式缩小范围。。
http://topic.****.net/t/20020128/09/503163.html
------解决方案--------------------
明白了,其实我是想倒推,如
(a+b)+? = m
? = m - a - b
检索一下除a,b外是否有这个?,如果有就yes,没有继续其他
其他运算规则一样,唯独带有除法的时候,所以要问清楚了
小于四个的数还可以用穷举法,还是比较简单。n比较大的时候就行不通了,这个时候我考虑到了用递归的方法。就是从这n个数中取两个进行加减乘除,把得到的四种结果再分别和从剩余的n-2个数中的一个数再进行加减乘除。如此递归下去,直到这n个数全部进行过计算,最后看得到的结果是否等于m。我试着写了些代码,可是错得一塌糊涂。求正确的代码(c语言)。
------解决方案--------------------
最好先整理出一个所为"算法结构",
这样你再用DELPHI代码实现即可
------解决方案--------------------
和delphi 没关系。。
a-b-c
和a -(b+c) 结果是一样的
这些是需要 做剪枝的。。 能提高一些效率。
象这个问题 目标解空间一定的 主要是 搜索的时候 效率优化
。
------解决方案--------------------
"先枚举某几种形式的算式"
选择有效的方式缩小范围。。
http://topic.****.net/t/20020128/09/503163.html
------解决方案--------------------
明白了,其实我是想倒推,如
(a+b)+? = m
? = m - a - b
检索一下除a,b外是否有这个?,如果有就yes,没有继续其他
其他运算规则一样,唯独带有除法的时候,所以要问清楚了