h*****0 发帖数: 4889 | 1 我用了穷举法,然后“面对对象”的设计了,结果算5个数就算了5分钟以上,6个数就
算不
完了…… | g**********y 发帖数: 14569 | | h*****0 发帖数: 4889 | 3 不是1到13,是任意数(当然,不考虑溢出int)
【在 g**********y 的大作中提到】 : n个1~13的数用加减乘除算24?
| h*****0 发帖数: 4889 | 4 也不一定算24,是算任意数
我目前写的程序算4个数只要不到1秒,算5个数就要近5分钟,算6个数算到死。
【在 h*****0 的大作中提到】 : 不是1到13,是任意数(当然,不考虑溢出int)
| g**********y 发帖数: 14569 | 5 意思是给N个数,和一个目标数,算有没有可能用加减乘除计算出来? | h*****0 发帖数: 4889 | 6 给出所有的结果。
【在 g**********y 的大作中提到】 : 意思是给N个数,和一个目标数,算有没有可能用加减乘除计算出来?
| g*****g 发帖数: 34805 | 7 直觉上做一点减枝应该是可以的,但是算法复杂度是
指数级的。
【在 h*****0 的大作中提到】 : 给出所有的结果。
| h*****0 发帖数: 4889 | 8 怎么减?
【在 g*****g 的大作中提到】 : 直觉上做一点减枝应该是可以的,但是算法复杂度是 : 指数级的。
| g*****g 发帖数: 34805 | 9 比如,这个数不可能大于所有数相乘。
确认这个之后,对这个数做成质数乘积,
之后应该可以做一些减枝。
【在 h*****0 的大作中提到】 : 怎么减?
| h*****0 发帖数: 4889 | 10 但是别的数不一定要想乘得到这个数啊,可以相减相加或相除。
【在 g*****g 的大作中提到】 : 比如,这个数不可能大于所有数相乘。 : 确认这个之后,对这个数做成质数乘积, : 之后应该可以做一些减枝。
| | | g**********y 发帖数: 14569 | 11 程序可能优化不够,6个数归到5个数,f(6) = C(6,2)x4xf(5), 这样算下去,f(6) =
11059200, 最多这么多可能性,穷举也不用算这么久。 | h*****0 发帖数: 4889 | 12 我完全没优化,都是"java"做法,所有都是对象加递归调用。
你觉得11M的复杂度应该算多久?我大概一个循环耗时半毫秒。
【在 g**********y 的大作中提到】 : 程序可能优化不够,6个数归到5个数,f(6) = C(6,2)x4xf(5), 这样算下去,f(6) = : 11059200, 最多这么多可能性,穷举也不用算这么久。
| m******t 发帖数: 2416 | 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的复杂度应该算多久?我大概一个循环耗时半毫秒。
| h*****0 发帖数: 4889 | 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.
| g**********y 发帖数: 14569 | | h*****0 发帖数: 4889 | 16 算着玩……
【在 g**********y 的大作中提到】 : 算这个有什么意义吗?还是就算着玩?
|
|