※ 引述《ooooooo (感觉衔接最重要...)》之铭言:
: 使用以下例子说明题目要求:
: input(A, k) ,
: A 表示目标数字
: k 表示可以使用的 digit 数目
: 补充条件(谢谢 E板友提醒):
: 1 <= A <= 10^15, 1<=k<=10
: Ex1
: Input(8000, 1)
: 代表只能使用一种数字,来组成最接近 8000 的数,Output 为 7777
: Ex2 Input(3355798521 , 10)
: 10 表示 0~9 均能使用, 故output 为 3355798521
: Ex3 Input(262004, 2)
: Output 为: 262222
: 目前是往dp 的方向在思考,不过卡住了,请教板友这题目该怎么解,谢谢
我觉得这题关键测资应该是类似 (8000, 1) , (88499 , 2)
假设 input(88499, 2) , 令 input[4:0] = {9,9,4,8,8} , len = 5
虚码大概如下
dig = 2; // 只能使用 2 位数
use_dig = 0; // 已使用位数
pool[10] = {0}; // 已使用过的数字放进来
int output[10]; // 最后的结果
for(i = len-1 ; i >= 0 ; i