|
with t10 as (select 0-rownum a10 from dual connect by rownum<=23),
t9 as (select rownum-1 a9 from dual connect by rownum<=28),t8 as (select rownum-1 a8 from dual connect by rownum<=15),
t7 as (select rownum-1 a7 from dual connect by rownum<=11),t6 as (select rownum-1 a6 from dual connect by rownum<=9),
t5 as (select rownum-1 a5 from dual connect by rownum<=8),t4 as (select rownum-1 a4 from dual connect by rownum<=7)
select a10, a9, a8, a7, a6, a5, a4, a10+a9+a8+a7+a6+a5+a4 Q,
rank()over(order by a10+a9+a8+a7+a6+a5+a4 asc, a10 desc, a9 desc, a8 desc, a7 desc) rk from t10, t9, t8, t7, t6, t5, t4
where 19*a10+17*a9+15*a8+13*a7+11*a6+9*a5+7*a4=22
and a9>=a8 and a8>=a7 and a7>=a6 and a6>=a5 and a5>=a4
/
A10 A9 A8 A7 A6 A5 A4 Q RK
------ ------ ------ ------ ------ ------ ------ ------ ------
-3 3 1 1 0 0 0 2 1
-4 4 2 0 0 0 0 2 2
-5 6 1 0 0 0 0 2 3
-6 8 0 0 0 0 0 2 4
-5 2 2 2 1 1 1 4 5
-6 3 3 1 1 1 1 4 6
-7 5 2 1 1 1 1 4 7
-7 4 2 2 2 1 0 4 8
-7 3 3 3 1 1 0 4 9
-8 7 1 1 1 1 1 4 10
-8 4 4 2 1 1 0 4 11
A10 A9 A8 A7 A6 A5 A4 Q RK
------ ------ ------ ------ ------ ------ ------ ------ ------
-8 4 3 3 2 0 0 4 12
-9 6 3 2 1 1 0 4 13
-9 5 5 1 1 1 0 4 14
-9 5 4 2 2 0 0 4 15
-10 8 2 2 1 1 0 4 16
-10 7 4 1 1 1 0 4 17
-10 7 3 2 2 0 0 4 18
-10 6 4 3 1 0 0 4 19
-10 5 5 4 0 0 0 4 20
-11 9 3 1 1 1 0 4 21
-11 9 2 2 2 0 0 4 22
A10 A9 A8 A7 A6 A5 A4 Q RK
------ ------ ------ ------ ------ ------ ------ ------ ------
-11 8 3 3 1 0 0 4 23
-11 7 5 2 1 0 0 4 24
-11 7 4 4 0 0 0 4 25
-11 6 6 3 0 0 0 4 26
-12 11 2 1 1 1 0 4 27
-12 9 4 2 1 0 0 4 28
-12 8 6 1 1 0 0 4 29
-12 8 5 3 0 0 0 4 30
-12 7 7 2 0 0 0 4 31
-13 13 1 1 1 1 0 4 32
-13 11 3 2 1 0 0 4 33
..............
-23 8 7 7 6 6 1 12 566
-23 8 6 6 6 6 5 14 568
已选择568行。
已用时间: 00: 00: 07.78
可知最小的Q为2,共有4种方案可选
任选其中一种,代入到
{x20,x19,x18,...x1}={212,19,18,...1}
然后除去x8~x13中任意五个数,再计算即可得到3540。
newkid给出了三种,我给出了一种,正好将这四种情况都覆盖到了
注意,newkid列出的那三种情况是按d给出的,即差值
我这里求的是a,是与最初设定的xn的偏移量,对xn作修正用的 |
|