- 最后登录
- 2014-11-24
- 在线时间
- 71 小时
- 阅读权限
- 10
- 注册时间
- 2013-5-26
- 积分
- 70
- 帖子
- 45
- 精华
- 0
- UID
- 1326591
- 积分
- 70
- 帖子
- 45
- 精华
- 0
- UID
- 1326591
|
本帖最后由 bristlegrass 于 2013-12-31 10:58 编辑
好吧...我也是跑程序的...
要思路的话就随便写一个吧
把数分成4组:
a.157
b.248
c.39
d.6
6在中间:
d和bc都不能相邻,所以先从a组抽2个数组成一个集合(e):3*2=6;
a组剩下一个数(f);
b组排列数:3*2=6;
把c组插入b组,分情况:
A.同在一端,无符合题意的排列:0;
B.各在一端,则ef只能插在248中间:2*2=4;
C.一个在一端一个在中间,则ef还有一个要插中间:2*2*2*(7-1)*2=96;
D.在同一空当,则ef有两个空当必插:2*2*2=8;
E.在不同空当:2*6*7=84;
综上:6*6*(0+4+96+8+84)=6912.
6在两端(2):
d和bc都不能相邻,所以先从a组抽1个数组成一个集合(g):3;
a组剩下两个数(h);
b组排列数:3*2=6;
把c组插入b组,分情况:
F.同在一端,无符合题意的排列:0;
G.各在一端,则h只能插在b中间:2*2=4;
H.一个在一端一个在中间,则h还有一个要插中间:2*2*2*(7-1)*2=96;
I.在同一空当,则h有两个空当必插:2*2*2=8;
J.在不同空当:2*6*7=84;
综上:2*3*6*(0+4+96+8+84)=6912.
总:6912+6912=13824.
也不知道对不对-.- 顺便说一下我的程序跑了72秒是不是很渣...
ps:改了一下算法,现在36秒... |
|