2016年8月5日 星期五

【A045】大樂透包牌

題目
題目將輸入8個數字,我們必須要把C(8,6)組合找出來

說明
如果這題沒有限制輸出格式會很簡單,但這題就是有限制輸出格式才會增加難度。
首先我們要先觀察規則,將輸入數字由小到大
IN7, IN6, IN5, IN4, IN3, IN2, IN1, IN0
Min                                             Max


接著觀察利用指標控制輸出的規則
f e d c b a
5 4 3 2 1 0→一開始
如果e~a全都只差1,則f++且e=4,d=3,c=2,b=1,a=0

f e d c b a
6 4 3 2 1 0
如果(f-e>1)&&(e-d==1)&&(d-c==1)&&(c-d==1)&&(b-a==1),則e++且d=3,c=2,b=1,a=0

f e d c b a
6 5 3 2 1 0
如果(e-d>1)&&(d-c==1)&&(c-d==1)&&(b-a==1),則d++且c=2,b=1,a=0

f e d c b a
6 5 4 2 1 0
如果(d-c>1)&&(c-d==1)&&(b-a==1),則c++且b=1,a=0

f e d c b a
6 5 4 3 1 0
如果(c-b>1)&&(b-a==1),則b++且a=0

f e d c b a
6 5 4 3 2 0
如果(a<2),則a++

f e d c b a
6 5 4 3 2 1
如果e~a全都只差1,則f++且e=4,d=3,c=2,b=1,a=0

f e d c b a
7 4 3 2 1 0

程式碼






沒有留言:

張貼留言

歡迎指教或發問