程序制作时的一个大问题,请大佬求助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
感觉不是很难,我研究研究
网上的差不多都是枚举法,可我不想用枚举法{:10_250:} 思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚举所有括号组合
然后再弄一个计算算式结果的函数来计算枚举出的这些算式的结果
感觉不难,我去尝试着按这个思路写一写
人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...
怎么玩,可能有8个数字{:10_250:} zhangjinxuan 发表于 2022-11-28 11:20
网上的差不多都是枚举法,可我不想用枚举法
?
void dfs(int i, int s) { //深搜找答案
这是在做什么?这不就是在枚举么?枚举所有的可能
这不是枚举这是什么?
你这不也是枚举么?只不过你这是1层,而我想的是2层
运算符和括号的所有组合
人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...
枚举,看起来你没有看懂我的描述
我先去用代码实现出来再说
人造人 发表于 2022-11-28 11:23
思路简单,就是枚举,举出所有的可能
两层枚举,第1层举出所有运算符组合
第2层给第1层的结果加括号,枚 ...
枚举了还在乎有多少个数字吗?
管你多少个数字,枚举所有的组合
^_^ 人造人 发表于 2022-11-28 11:28
枚举,看起来你没有看懂我的描述
我先去用代码实现出来再说
好的,那我先去写代码了
人造人 发表于 2022-11-28 11:30
枚举了还在乎有多少个数字吗?
管你多少个数字,枚举所有的组合
^_^
有道理{:10_333:} 不支持浮点数是吧?
就是说2 / 3 的结果是 0
人造人 发表于 2022-11-28 11:52
不支持浮点数是吧?
就是说2 / 3 的结果是 0
肯定要支持浮点数,不然 3 3 8 8 算不出来 zhangjinxuan 发表于 2022-11-28 11:53
肯定要支持浮点数,不然 3 3 8 8 算不出来
神马玩意儿?又不吞帖了? 人造人 发表于 2022-11-28 11:52
不支持浮点数是吧?
就是说2 / 3 的结果是 0
看他的例子,应该需要支持分数 好的,我研究研究
代码贴错了{:10_282:} 只想领个币~ 围观大佬~ lxping 发表于 2022-11-28 12:30
只想领个币~
你干嘛,你们{:10_277:} hellometa 发表于 2022-11-28 12:31
围观大佬~
你就光靠领币赚了将近300鱼币,啊?{:10_257:}
页:
[1]
2