zhangjinxuan 发表于 2022-11-28 10:21:05

程序制作时的一个大问题,请大佬求助TOT【第二弹】

本帖最后由 zhangjinxuan 于 2022-11-28 17:26 编辑

上一弹:https://fishc.com.cn/thread-219377-1-1.html

最近在做24点计算器,计算的函数写好了,但是有一个大问题{:10_250:}

先说思路,我的思路是这样的,就是深搜,搜所有算式,搜到了就返回计算的算式

但是算式从左往右计算才可以得到 24,因此写了一个加括号的函数{:10_256:}

正当我以为程序就大功告成时,我忽然发现,这个程序他算不出来 3 3 8 8 !{:10_282:}

补充:3 3 8 8 的解为: 8 / (3 - 8 / 3)

很明显,我的思路错了{:10_266:}

正如@tommyyu 所说的那样:{:10_250:}
我的意思是这种方法可能不一定能够求出答案,因为会有那种必须是不按照顺序的算式
链接:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&pid=6011883&ptid=219377

哎,如果我当时听他的劝告那就没有什么事了啊,现在倒好,程序差不多要完工,结果发现了一个大问题,这不就类似于全部重来吗{:10_266:}


这是我计算类的关键代码:
//防止抄袭,已撤销


如果你还不知道我在说啥,那就当这道题来做:

给定两个数字 n (3 <= n <= 8), m (-100000 <= m <= 100000),接下来输入 n 个数 (设数字为 i,那么 -10000 <= i <= 10000),最后输出这些数字可不可以通过加减乘除凑成 m,可以则输出算式,算式中可以出现括号

样例:
4 24
1 2 3 4
(1+2+3)*4=24
输出其一解即可

大家有思路吗,我可不想半途就废啊{:10_250:}

人造人 发表于 2022-11-28 11:16:30

感觉不是很难,我研究研究

zhangjinxuan 发表于 2022-11-28 11:20:37

人造人 发表于 2022-11-28 11:16
感觉不是很难,我研究研究

网上的差不多都是枚举法,可我不想用枚举法{:10_250:}

人造人 发表于 2022-11-28 11:23:26

思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚举所有括号组合
然后再弄一个计算算式结果的函数来计算枚举出的这些算式的结果

感觉不难,我去尝试着按这个思路写一写

zhangjinxuan 发表于 2022-11-28 11:24:12

人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...

怎么玩,可能有8个数字{:10_250:}

人造人 发表于 2022-11-28 11:27:09

zhangjinxuan 发表于 2022-11-28 11:20
网上的差不多都是枚举法,可我不想用枚举法

?
void dfs(int i, int s) { //深搜找答案
这是在做什么?这不就是在枚举么?枚举所有的可能
这不是枚举这是什么?

你这不也是枚举么?只不过你这是1层,而我想的是2层
运算符和括号的所有组合

人造人 发表于 2022-11-28 11:28:58

人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...

枚举,看起来你没有看懂我的描述
我先去用代码实现出来再说

人造人 发表于 2022-11-28 11:30:34

人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...

枚举了还在乎有多少个数字吗?
管你多少个数字,枚举所有的组合
^_^

人造人 发表于 2022-11-28 11:31:16

人造人 发表于 2022-11-28 11:28
枚举,看起来你没有看懂我的描述
我先去用代码实现出来再说

好的,那我先去写代码了

zhangjinxuan 发表于 2022-11-28 11:33:34

人造人 发表于 2022-11-28 11:30
枚举了还在乎有多少个数字吗?
管你多少个数字,枚举所有的组合
^_^

有道理{:10_333:}

人造人 发表于 2022-11-28 11:52:49

不支持浮点数是吧?
就是说2 / 3 的结果是 0

zhangjinxuan 发表于 2022-11-28 11:53:48

人造人 发表于 2022-11-28 11:52
不支持浮点数是吧?
就是说2 / 3 的结果是 0

肯定要支持浮点数,不然 3 3 8 8 算不出来

zhangjinxuan 发表于 2022-11-28 11:54:21

zhangjinxuan 发表于 2022-11-28 11:53
肯定要支持浮点数,不然 3 3 8 8 算不出来

神马玩意儿?又不吞帖了?

tommyyu 发表于 2022-11-28 11:54:49

人造人 发表于 2022-11-28 11:52
不支持浮点数是吧?
就是说2 / 3 的结果是 0

看他的例子,应该需要支持分数

人造人 发表于 2022-11-28 11:59:18

好的,我研究研究

zhangjinxuan 发表于 2022-11-28 12:13:19

代码贴错了{:10_282:}

lxping 发表于 2022-11-28 12:30:27

只想领个币~

hellometa 发表于 2022-11-28 12:31:28

围观大佬~

zhangjinxuan 发表于 2022-11-28 12:40:42

lxping 发表于 2022-11-28 12:30
只想领个币~

你干嘛,你们{:10_277:}

zhangjinxuan 发表于 2022-11-28 14:16:10

hellometa 发表于 2022-11-28 12:31
围观大佬~

你就光靠领币赚了将近300鱼币,啊?{:10_257:}
页: [1] 2
查看完整版本: 程序制作时的一个大问题,请大佬求助TOT【第二弹】