- 论坛徽章:
- 0
|
本帖最后由 4tar 于 2010-08-20 15:13 编辑
修改了一下陈述使其更严密些,同时添加了两个原始搜索中漏掉的组合(shy,原本的穷举算法漏掉了一些边际条件)。当然,不影响思路本身。
容易证明:如果W的一个满足条件的解中含有12,则向该解中添加一个12可以构成W+12的一个满足条件的解。
所以只需要找到一个连续的区间[n,n+11],使得落在其中的每一个W都有一个含12的解,则之后所有的正值均可通过向该区间内某个正值的解中添加若干个12来获得。
同样也容易证明:当W足够大,12在其解中必然出现。(此证明对解决问题不是必要的,只不过稍微增添一点搜索的信心罢了。直觉可以知道这个12-区间将很早出现)。
简单的穷举搜索即可知[43,54]是我们需要的最早出现的12-区间,当然你也可以使用一些技巧来加快搜索(可参见之前帖子里已有的一些分析),但对于此问题来说,由于仅存在少量的数字(12/7/5),且该少量数字存在一定的特殊性(12=7+5),使得这些技巧显得有些无谓。
这个思路对于一般的数字组合也是适用的,无非是搜寻的区间长度和添加的数字组合需要根据可选的数字组合而变化。具体如何确定长度及相关的添加集合实际上是一个丢番都方程问题,可以查看相关资料,不赘述。
以下是lz问题的搜索结果:
W=1, 5, ( -7 -7 5 5 5 )
W=2, 2, ( 7 -5 )
W=3, 3, ( -7 5 5 )
W=4, 4, ( 7 7 -5 -5 )
W=5, 1, ( 5 )
W=6, 6, ( -7 -7 5 5 5 5 ) or ( 7 7 7 -5 -5 -5 )
W=7, 1, ( 7 )
W=8, 4, ( -7 5 5 5 )
W=9, 3, ( 7 7 -5 )
W=10, 2, ( 5 5 )
W=11, 5, ( 7 7 7 -5 -5 )
W=12, 1, ( 12 )
W=13, 5, ( -7 5 5 5 5 )
W=14, 2, ( 7 7 )
W=15, 3, ( 5 5 5 )
W=16, 4, ( 7 7 7 -5 )
W=17, 2, ( 12 5 )
W=18, 6, ( -7 5 5 5 5 5 ) or ( 7 7 7 7 -5 -5 )
W=19, 2, ( 12 7 )
W=20, 4, ( 5 5 5 5 )
W=21, 3, ( 7 7 7 )
W=22, 3, ( 12 5 5 )
W=23, 5, ( 7 7 7 7 -5 )
W=24, 2, ( 12 12 )
W=25, 5, ( 5 5 5 5 5 )
W=26, 3, ( 12 7 7 )
W=27, 4, ( 12 5 5 5 )
W=28, 4, ( 7 7 7 7 )
W=29, 3, ( 12 12 5 )
W=30, 6, ( 7 7 7 7 7 -5 ) or ( 5 5 5 5 5 5 )
W=31, 3, ( 12 12 7 )
W=32, 5, ( 12 5 5 5 5 )
W=33, 4, ( 12 7 7 7 )
W=34, 4, ( 12 12 5 5 )
W=35, 5, ( 7 7 7 7 7 )
W=36, 3, ( 12 12 12 )
W=37, 6, ( 12 5 5 5 5 5 )
W=38, 4, ( 12 12 7 7 )
W=39, 5, ( 12 12 5 5 5 )
W=40, 5, ( 12 7 7 7 7 )
W=41, 4, ( 12 12 12 5 )
W=42, 6, ( 7 7 7 7 7 7 )
W=43, 4, ( 12 12 12 7 )
W=44, 6, ( 12 12 5 5 5 5 )
W=45, 5, ( 12 12 7 7 7 )
W=46, 5, ( 12 12 12 5 5 )
W=47, 6, ( 12 7 7 7 7 7 )
W=48, 4, ( 12 12 12 12 )
W=49, 7, ( 7 7 7 7 7 7 7 ) or ( 12 12 5 5 5 5 5 )
W=50, 5, ( 12 12 12 7 7 )
W=51, 6, ( 12 12 12 5 5 5 )
W=52, 6, ( 12 12 7 7 7 7 )
W=53, 5, ( 12 12 12 12 5 )
W=54, 7, ( 12 7 7 7 7 7 7 ) |
|