![]() |
1
1
Haskell编程,第11章:倒计时问题 |
![]() |
2
4
暴力听起来是一种有效的方法。但是暴力是一种不知情的搜索……当你到达搜索树中的一个分支时,它并不能让你有根据地猜测该走哪条路。 你可能想调查的是 heuristic functions 见多识广的 . 一个启发式函数会观察一个状态,并估计你离目标有多远。如果你能找到一个有效的启发式函数,你可以应用如下算法 A* .
|
![]() |
3
1
我会问
|
![]() |
4
0
我认为这是有道理的。 你可以利用乘法之间的对称性来进一步修剪你的树。a*b=b*a。 |
![]() |
5
0
另一种解决方法是使用 genetic algorithms . 您的填充将以插入数组元素之间的随机运算符开始。
变异运算符可以简单地将一个运算符更改为另一个运算符,而交叉函数可以将表达式左侧的运算符与另一个表达式右侧的运算符组合在一起。
我不知道这和暴力相比会怎么样,但这是一个不同的解决方案,我想这会让你在采访中脱颖而出,因为每个人都能看到暴力的解决方案。
如果你只需要一个足够好的解决方案
|
![]() |
6
0
如果是这样,一个简单的分支搜索不会终止,因为一元操作的使用次数没有先验限制。如果没有,一个天真的搜索可能会工作得很好。 这里有一个有趣的策略,如果不是一个有效的策略:为正在使用的算术请求或生成一个BNF语法。像这样违反规则 < 然后用这个语法来发展所有可能的表达,比如说,使用不到20个语法规则。对它们进行评估。它将被保证是有界的,并将生成所有在该语言中有效的“不太复杂”表达式。 |
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 5 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 5 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 9 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 9 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 10 月前 |