※ 引述《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