作者bleed1979 (十三)
站内Prob_Solve
标题Re: [问题] 1~20数列,相邻/头尾和为质数
时间Tue Nov 29 23:11:50 2011
※ 引述《EdisonX (闭上眼的鱼)》之铭言:
: 这问题是逛网路时看到的。
: 1~20 排成一列,使得任二相邻之和为质数,且第一个数与最後一个数之和也为质数。
: 要找出所有解。
: 我的想法也点暴力,因任何数最大和只到39,所以先建 39 以下的质数表,
: 又因相邻之二数必为一奇一偶 (加起来才会是奇数),所以分二个 array 做 permutation
: 这样从 20P20 = 2.43E18 降到 (10P10)**2 = 1.32E13,
: 还是跑很久!
: 另外的想法是用 bool used[21]={fase};
: 再进行质数之拆解,像 19 可拆成 1/18 2/17 3/16....
: 不过想法到这里就卡住了,不知各位版友对於这问题有何想法?
dfs,我没有等他跑完就已经睡着了。
梦中的我现在在打字。
作法不外把1到20可以配对成为prime的number先找出来。
A[1]是跑1到20,同时可以决定A[20],在A[20]时仅需检查A[19]
基本上bool used[21]是dfs必备的阵列,用来决定是否重复。
连codepad那里的显示都timeout了。
http://codepad.org/fcXlNB4r
http://paste.plurk.com/show/774093/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.123.27
1F:推 EdisonX:写得太漂亮了,谢谢 b 大不吝解答,非常感谢. 11/29 23:39