avatar
谁写过24点程序# Java - 爪哇娇娃
h*0
1
我用了穷举法,然后“面对对象”的设计了,结果算5个数就算了5分钟以上,6个数就
算不
完了……
avatar
g*y
2
n个1~13的数用加减乘除算24?
avatar
h*0
3
不是1到13,是任意数(当然,不考虑溢出int)

【在 g**********y 的大作中提到】
: n个1~13的数用加减乘除算24?
avatar
h*0
4
也不一定算24,是算任意数
我目前写的程序算4个数只要不到1秒,算5个数就要近5分钟,算6个数算到死。

【在 h*****0 的大作中提到】
: 不是1到13,是任意数(当然,不考虑溢出int)
avatar
g*y
5
意思是给N个数,和一个目标数,算有没有可能用加减乘除计算出来?
avatar
h*0
6
给出所有的结果。

【在 g**********y 的大作中提到】
: 意思是给N个数,和一个目标数,算有没有可能用加减乘除计算出来?
avatar
g*g
7
直觉上做一点减枝应该是可以的,但是算法复杂度是
指数级的。

【在 h*****0 的大作中提到】
: 给出所有的结果。
avatar
h*0
8
怎么减?

【在 g*****g 的大作中提到】
: 直觉上做一点减枝应该是可以的,但是算法复杂度是
: 指数级的。

avatar
g*g
9
比如,这个数不可能大于所有数相乘。
确认这个之后,对这个数做成质数乘积,
之后应该可以做一些减枝。

【在 h*****0 的大作中提到】
: 怎么减?
avatar
h*0
10
但是别的数不一定要想乘得到这个数啊,可以相减相加或相除。

【在 g*****g 的大作中提到】
: 比如,这个数不可能大于所有数相乘。
: 确认这个之后,对这个数做成质数乘积,
: 之后应该可以做一些减枝。

avatar
g*y
11
程序可能优化不够,6个数归到5个数,f(6) = C(6,2)x4xf(5), 这样算下去,f(6) =
11059200, 最多这么多可能性,穷举也不用算这么久。
avatar
h*0
12
我完全没优化,都是"java"做法,所有都是对象加递归调用。
你觉得11M的复杂度应该算多久?我大概一个循环耗时半毫秒。

【在 g**********y 的大作中提到】
: 程序可能优化不够,6个数归到5个数,f(6) = C(6,2)x4xf(5), 这样算下去,f(6) =
: 11059200, 最多这么多可能性,穷举也不用算这么久。

avatar
m*t
13

That's more like smalltalk, not java. 8-)
Did you consider caching intermediate results?
For instance, if you have calculated all
the possible outcomes of (a,b,c,d), they can
be reused in (a,b,c,d,e), (a,b,c,d,f), etc.

【在 h*****0 的大作中提到】
: 我完全没优化,都是"java"做法,所有都是对象加递归调用。
: 你觉得11M的复杂度应该算多久?我大概一个循环耗时半毫秒。

avatar
h*0
14
这样啊,用空间复杂度换时间复杂度,是个好办法。我试试。

【在 m******t 的大作中提到】
:
: That's more like smalltalk, not java. 8-)
: Did you consider caching intermediate results?
: For instance, if you have calculated all
: the possible outcomes of (a,b,c,d), they can
: be reused in (a,b,c,d,e), (a,b,c,d,f), etc.

avatar
g*y
15
算这个有什么意义吗?还是就算着玩?
avatar
h*0
16
算着玩……

【在 g**********y 的大作中提到】
: 算这个有什么意义吗?还是就算着玩?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。