Contents
Problem
給你 e-modulus 值,還有數個 e-coin ,每個 e-coin 會有 InfoTechnological value 和 conventional value ,而 e-modulus 的算法是 $SQRT(X\times X+Y\times Y)$ ,X 為所選取之 e-coin 的 InfoTechnological value 總量, Y 則為 conventional value 的。
今欲計算此 e-modulus 需要幾個 e-coin 才可湊得。
Solution
( InfoTechnological value , conventional value )
e-modulus 的最大值為 300 ( $300\times300+0=90000$ ),所以最多只會有 300 個 e-coin (1,0) or (0,1),把 dp[][]
先初始化為 301 ,記得 dp[0][0] = 0
方便待會計算。
DP: dp[x][y] = MIN(dp[x][y], dp[x - c][y - tech] + 1)
,計算 (x , y) 不同組合時 e-coin 的最少數量。
(計算 e-modulus 時,要先算好所有 e-coin 中 x 和 y 的總和,才開始進行平方的動作)
最後就是從 dp[][]
裡找 ( x , y ) 中可以達到給定的 e-modulus 值,其所需的最少 e-coin 量。
Code
1 |
|