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:}