[問題] Re: [問題] 0~9 挑k個數字, 組出最接近

作者: kather (Kather)   2014-11-02 10:12:41
其實這個問題應該考慮三個數就好
A,k
1.最高位-1低於A的最大值
2跟3用規則來定
考慮A=124351234,k=3.
1.取99999999
(A的高位1-1為0 降一位取最大)
2跟3:
先補滿能補滿的
即124
接下來遇到3,不在k個數(1,2,4)裡面
從1,2,4組
大於351234的極小值
小於351234的最大值
就是411111跟244444
得到:
124411111,
124244444,
99999999
再從這三個數中取差距A最小的
最多取到兩個
得到124,411111為解
例子2
A1312,k2
1.取999
2.
補滿131,從1,3取低於2的最大值跟高於2的最小值,即1跟3

1311
1313
999
上面兩數跟A差距都是1
此例解為1311與1313
例子3
A1000,k1
1.取999
2.補滿1
取大於000的極小值與小於000的極大值
只有111

1111
999
而999與A差距最小
此例解為999
例子4
A6000,k1
1.取5555
2.補滿6
取大於000的最小值與小於000的最大值
即666

5555
6666
則5555為解
作者: flere (人間失格)   2014-11-02 11:49:00
(7099,2)是不是會錯呀? 感覺您會輸出7077, 答案應為7111
作者: kather (Kather)   2014-11-02 12:20:00
炸了 XD 沒考慮到這個case看來還要修正
作者: scwg ( )   2014-11-03 14:28:00
搭火車的時候寫的有點像這個做法的 greedy 硬幹http://ideone.com/bSBiJL

Links booklink

Contact Us: admin [ a t ] ucptt.com