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

作者: EdisonX (卡卡獸)   2014-10-31 23:06:13
※ 引述《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
作者: yr (Sooner Born Sooner Bred)   2014-10-31 23:55:00
(1000,1) 的話 999 這種狀況也要考慮喔如果沒限制答案位數要跟輸入一樣的話
作者: LPH66 (-6.2598534e+18f)   2014-11-01 00:24:00
條件只有最接近所以 (1000,1) 的答案確實是 999應該還有一種關鍵測資 (2243,2)這個答案是 2242 或 2244 或皆可題目應該要說明一下
作者: ooooooo (感覺銜接最重要...)   2014-11-01 00:50:00
(2243,2) => 2242 or 2244 皆可
作者: EdisonX (卡卡獸)   2014-11-01 02:19:00
對吶,(1000,1) 的話又死在 1111 了 Orz看來要對剩 1 個 1 可選的做 special case 才"有機會"對

Links booklink

Contact Us: admin [ a t ] ucptt.com