这题是相当经典的动态规划了,类似于 01 背包问题。
定义 dp[i][j] 为,考虑前 i 块晶石,充入能量为 j 所需的最少晶石数。
用 cur[i] 表示当前晶石正常激发提供的能量值。
状态转移为:dp[i][j]=min(dp[i−1][j−cur[i]]+1,dp[i−1][j])
你手中有 n 块蕴含能量的晶石,第 i 块晶石的能量值为 ai。现在你需要为一个核心充能,希望充入的能量恰好等于 x。
每块晶石都有两种使用方式:
无论采用哪种方式,使用一块晶石都计为一次操作。请你计算出达到恰好 x 点能量的最少操作次数。如果无法恰好达到 x,请输出 -1。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册