[问题] 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