var N number

exec :N :=2

WITH

linesrc as (

select col1||col2||col3||col4||col5 strings,

col1+col2+col3+col4+col5 balls,

r.*

from (

select

mod(floor(rownum/16),2) col1 ,

mod(floor(rownum/8),2) col2 ,

mod(floor(rownum/4),2) col3 ,

mod(floor(rownum/2),2) col4 ,

mod(floor(rownum),2) col5

from dual

connect by rownum <=32

) r

where col1+col2+col3+col4+col5<=:N

ORDER BY 1 desc

),

probed_result as (

select

max(line1.balls + line2.balls + line3.balls + line4.balls + line5.balls) probed_max_balls

from

linesrc line1,

linesrc line2,

linesrc line3,

linesrc line4,

linesrc line5

where

line1.col1 + line2.col1 + line3.col1+ line4.col1+ line5.col1 <=:N

and line1.col2 + line2.col2 + line3.col2+ line4.col2+ line5.col2 <=:N

and line1.col3 + line2.col3 + line3.col3+ line4.col3+ line5.col3 <=:N

and line1.col4 + line2.col4 + line3.col4+ line4.col4+ line5.col4 <=:N

and line1.col5 + line2.col5 + line3.col5+ line4.col5+ line5.col5 <=:N

and line1.col1 + line2.col2 + line3.col3+ line4.col4+ line5.col5 <=:N

and line1.col2 + line2.col3 + line3.col4+ line4.col5 <=:N

and line1.col3 + line2.col4 + line3.col5<=:N

and line1.col4 + line2.col5 <=:N

and line2.col1 + line3.col2 + line4.col3+ line5.col4 <=:N

and line3.col1 + line4.col2 + line5.col3 <=:N

and line4.col1 + line5.col2 <=:N

and line1.col5 + line2.col4 + line3.col3+ line4.col2+ line5.col1 <=:N

and line1.col4 + line2.col3 + line3.col2+ line4.col1 <=:N

and line1.col3 + line2.col2 + line3.col1 <=:N

and line1.col2 + line2.col1 <=:N

and line2.col5 + line3.col4 + line4.col3+ line5.col2<=:N

and line3.col5 + line4.col4 + line5.col3<=:N

and line4.col5 + line5.col4 <=:N

and rownum < power(10,:N)*2

),

probed_linesrc AS (

select *

from linesrc,probed_result

where balls>= probed_max_balls-4*:N -- 最少要probed_max_balls才能符合要求,但是每一行最多N个ball, 所以每一行至少probed_max_balls-4*N

),

solution as (

select /*+ materialize */

line1.strings || line2.strings || line3.strings || line4.strings || line5.strings result ,

line1.balls + line2.balls + line3.balls + line4.balls + line5.balls total_balls

from

probed_linesrc line1,

probed_linesrc line2,

probed_linesrc line3,

probed_linesrc line4,

probed_linesrc line5

where

line1.col1 + line2.col1 + line3.col1+ line4.col1+ line5.col1 <=:N

and line1.col2 + line2.col2 + line3.col2+ line4.col2+ line5.col2 <=:N

and line1.col3 + line2.col3 + line3.col3+ line4.col3+ line5.col3 <=:N

and line1.col4 + line2.col4 + line3.col4+ line4.col4+ line5.col4 <=:N

and line1.col5 + line2.col5 + line3.col5+ line4.col5+ line5.col5 <=:N

and line1.col1 + line2.col2 + line3.col3+ line4.col4+ line5.col5 <=:N

and line1.col2 + line2.col3 + line3.col4+ line4.col5 <=:N

and line1.col3 + line2.col4 + line3.col5<=:N

and line1.col4 + line2.col5 <=:N

and line2.col1 + line3.col2 + line4.col3+ line5.col4 <=:N

and line3.col1 + line4.col2 + line5.col3 <=:N

and line4.col1 + line5.col2 <=:N

and line1.col5 + line2.col4 + line3.col3+ line4.col2+ line5.col1 <=:N

and line1.col4 + line2.col3 + line3.col2+ line4.col1 <=:N

and line1.col3 + line2.col2 + line3.col1 <=:N

and line1.col2 + line2.col1 <=:N

and line2.col5 + line3.col4 + line4.col3+ line5.col2<=:N

and line3.col5 + line4.col4 + line5.col3<=:N

and line4.col5 + line5.col4 <=:N

)

select rownum r,result from solution

where total_balls = (select max(total_balls) from solution)

Copyright © 2088 世界杯德国7比1巴西|2010 世界杯|MPM-DPM三部曲世界杯策略分析站|mpmdpmtrilogi.com All Rights Reserved.
友情链接