题数:37
题列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]
1.第一个月共有10笔必选业务(上限为10笔)
[1, 5/8, 7/17/18, 15, 25, 30, 26, 28, 31, 37]
1.1 排列数:
1.1.1
第一笔固定为第一天。
1.1.2
时间必须为最后一天的[26, 28, 31, 37]放在最后四个,其中37固定在最后位置
1 [7,8,9] 10
X1 = A(1,1) * A(2,2) * A(1,1)
1.1.3
a为15,b为5/8,c1为7/17/18,c2为25,c1在c2前,d为30,总计5道
a b c1c2 d
X2 = A(4,4) * C(1,3)
1.1.4
故总排列数为 sum = X1 * X2 = 6 * 6 * 2 * 3 = 144
。
1.2 组合数:
组合数为:
5/8 7/17/18
sum = C(1,2) * C(1,3) = 6
1.3 小结:
因为当前增加业务采用选择三种活动增加对应业务,但是十道题每道题有三种选择3*10=30
,组合数却只有6,排列数也很小,
会导致当前所选活动类型很多次没有匹配,需要用户点击增加其他类型的活动,
组合数和排列数过小,这种情况发生的就会越频繁,第二个月类似。。
我们这时有三种选择:
- 告知用户选择其他活动(可能导致通知用户比较频繁)。
- 若所选类型业务没有符合条件的,直接增加的业务为符合条件的(但是用户会觉得疑惑,增加的和自己选的不一样)。
- 只给用户选择
增加和撤销
两个选项。
2.第二个月共有8笔必选业务(上限为10笔)
[26, 28, 30, 31, 33, 34, 36, 37]
1.1 排列数:
- 时间必须为最后一天的[26, 28, 31, 37]放在最后四个,其中37固定在最后位置。
总结
目前比较推荐的方案是:
- 只给用户选择
增加和撤销
两个选项。 - 一次性生成全部业务,同时如果用户觉得生成的不好,可以重新生成(这一种更好,因为可选择性本来就很低,一次性生成还可以降低服务器设备压力)。
组合排列公式:
A(m,n) = n! / [(n - m )!]
C(m,n) = n! * / [m! * (n - m)!]