tommyyu 发表于 2022-12-2 08:48:24

zhangjinxuan 发表于 2022-12-2 08:45
这肯定不行啊

那现在是找到dfs剪枝的方法,或者不用枚举,不然肯定过不了{:10_291:}

zhangjinxuan 发表于 2022-12-2 08:49:08

tommyyu 发表于 2022-12-2 08:45
我又算了一下,也就大概444426393600次,4千亿

我还要确保6个数字以内的跑起来在200ms之内,因为之后要做训练器,8个数字不管他,毕竟,谁都不会傻傻乎乎训练8个数字吧

tommyyu 发表于 2022-12-2 08:50:00

zhangjinxuan 发表于 2022-12-2 08:49
我还要确保6个数字以内的跑起来在200ms之内,因为之后要做训练器,8个数字不管他,毕竟,谁都不会傻傻乎 ...

六个数只有20995200次,这个不会超

zhangjinxuan 发表于 2022-12-2 08:52:17

tommyyu 发表于 2022-12-2 08:50
六个数只有20995200次,这个不会超

嗯,也对,或者我把用户输入的数字限制调小点,毕竟,真正用8个数字的人很少

但是,题目做的出来吗,这一次我真的不想叨叨什么了,就来做这道题{:10_266:}

tommyyu 发表于 2022-12-2 08:52:53

zhangjinxuan 发表于 2022-12-2 08:52
嗯,也对,或者我把用户输入的数字限制调小点,毕竟,真正用8个数字的人很少

但是,题目做的出来吗, ...

{:10_304:}不知道,试试吧,感觉这是一个比较简单一点的方法

zhangjinxuan 发表于 2022-12-2 08:55:03

tommyyu 发表于 2022-12-2 08:48
那现在是找到dfs剪枝的方法,或者不用枚举,不然肯定过不了

不是,我在枚举算式的时候就Over了,因为我程序搞出来的算式必须从左往右才能算出24,也就正如您说的,有些算式必须不能从左往右计算才能得到24,就比如说5 5 5 5,这就是其中一组hack我程序的一组数据

程序第一步就倒下了,这不就类似于从头开始吗{:10_250:}

zhangjinxuan 发表于 2022-12-2 08:55:33

tommyyu 发表于 2022-12-2 08:52
不知道,试试吧,感觉这是一个比较简单一点的方法

来吧,敲一敲

tommyyu 发表于 2022-12-2 09:13:15

zhangjinxuan 发表于 2022-12-2 08:55
不是,我在枚举算式的时候就Over了,因为我程序搞出来的算式必须从左往右才能算出24,也就正如您说的,有 ...

比如3 8 1
首先选两个数,有三种选择方法,3、8    3、1    8、1
以选了3、8为例,此处有六种运算方式
38+、38-、38*、38/、83-、83/
在这里为了节省篇幅,以38+为例
则此时只有两个元素,11和1,此时又有6种方法
38+1+、38+1-38+1*38+1/138+-138+/
将它们分别展开,就是3+8+1、3+8-1、(3+8)*1、(3+8)/1、1-(3+8)、1/(3+8)
按以上方法枚举即可

zhangjinxuan 发表于 2022-12-2 09:14:52

tommyyu 发表于 2022-12-2 09:13
比如3 8 1
首先选两个数,有三种选择方法,3、8    3、1    8、1
以选了3、8为例,此处有六种运算方式
...

有点道理{:10_257:}

zhangjinxuan 发表于 2022-12-2 09:21:05

tommyyu 发表于 2022-12-2 09:13
比如3 8 1
首先选两个数,有三种选择方法,3、8    3、1    8、1
以选了3、8为例,此处有六种运算方式
...

那么 5 5 5 5 怎么表示呢

tommyyu 发表于 2022-12-2 09:22:12

zhangjinxuan 发表于 2022-12-2 09:21
那么 5 5 5 5 怎么表示呢

可以在每一个数字前都加一个~符号,方便读取
~5~5+这样就可以了

zhangjinxuan 发表于 2022-12-2 09:23:34

tommyyu 发表于 2022-12-2 09:22
可以在每一个数字前都加一个~符号,方便读取
~5~5+这样就可以了

不是,5 5 5 5 的正确表达式为 5 5 * 5 5 / - 对吧,但是这个表达式会被搜到吗?

tommyyu 发表于 2022-12-2 09:31:19

zhangjinxuan 发表于 2022-12-2 09:23
不是,5 5 5 5 的正确表达式为 5 5 * 5 5 / - 对吧,但是这个表达式会被搜到吗?

会的。
第一步,假设程序选择5 5,并选择*,及5 5*
第二步,此时有25 5 5三个元素,若程序选择了5 5,并相除,则有25 1(5 5*    5 5 /)
第三步,如果程序选择了相减,则得到24,即为 5 5 * 5 5 / -

zhangjinxuan 发表于 2022-12-2 09:33:52

tommyyu 发表于 2022-12-2 09:31
会的。
第一步,假设程序选择5 5,并选择*,及5 5*
第二步,此时有25 5 5三个元素,若程序选择了5 5, ...

还是有点迷糊,因为一个数字他是怎么得到的该如何表示?这样,你先写出来吧

tommyyu 发表于 2022-12-2 09:39:32

zhangjinxuan 发表于 2022-12-2 09:33
还是有点迷糊,因为一个数字他是怎么得到的该如何表示?这样,你先写出来吧

这个程序的大致思路是选两个数并进行运算

我应该写不了{:10_266:}快期末了,还要复习,这个周末还有一个周测

zhangjinxuan 发表于 2022-12-2 09:40:17

tommyyu 发表于 2022-12-2 09:39
这个程序的大致思路是选两个数并进行运算

我应该写不了快期末了,还要复习,这个周末还有一 ...

好吧,这几天我思索思索

高山 发表于 2022-12-2 17:05:58

题目链接?

zhangjinxuan 发表于 2022-12-2 17:10:31

高山 发表于 2022-12-2 17:05
题目链接?

没链接,自己造的

高山 发表于 2022-12-2 17:12:13

zhangjinxuan 发表于 2022-12-2 17:10
没链接,自己造的

{:10_266:}
本来想在网上搜个答案凑个巧{:10_266:}

zhangjinxuan 发表于 2022-12-2 17:13:41

高山 发表于 2022-12-2 17:12
本来想在网上搜个答案凑个巧

你真行啊{:10_282:}

网上的都是4个数字,这个是3~8个数字网上基本搜不到{:10_266:}
页: 1 [2] 3 4
查看完整版本: 24点题目,求助大佬,要写程序!