gpt4 book ai didi

c++ - 动态创建的运算符

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:59 24 4
gpt4 key购买 nike

我使用 dev-cpp 和 wxwidgets 创建了一个程序来解决一个难题。

用户必须填写操作 block 和结果 block ,程序会解决它。我正在使用蛮力解决它,我使用递归算法生成所有非重复的 9 长度数字组合。它做起来非常快。

到这里一切都很棒!

但问题是当我的程序根据 block 上的字符运行时。由于与 +、-、* 等进行字符比较,它非常慢(它永远不会得到答案)。我正在做一个 CASE。

是否有某种方式或某种编程语言允许动态创建运算符?所以我可以将运算符 ROW1COL2 定义为 +,所有其他操作也是如此。

我留下了应用程序的屏幕截图,这样更容易理解拼图的工作原理。

http://www.imageshare.web.id/images/9gg5cev8vyokp8rhlot9.png

PD:该算法有效,我尝试了一个简单的谜题,并在一秒钟内解决了它。

最佳答案

不确定这是否真的是您要找的东西,但是..
任何面向对象的语言(如 C++ 或 C#)都允许您创建“Operator”基类,然后从该基类派生“PlusOperator”或“MinusOperator”等。这是避免此类 case 语句的标准方法。

但是我不确定这是否能解决您的性能问题。
对这样的问题使用普通的蛮力将导致你得到一个指数解决方案。这对于小输入似乎工作得很快——比如完成所有数字。但是如果你想完成这些操作,这是一个更大的问题,有更多的可能性。
因此即使没有 CASE,您的程序也可能无法解决它。

尝试解决此类问题的正确方法是使用一些使用启发式函数的高级搜索方法。查看A* (A-star) algorithm例如。

祝你好运!

关于c++ - 动态创建的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/109129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com