1. 题目
2. 算法分析
这题主要是采用动态规划的思想,自底向上的搜索方法。
3. 算法
/*以下为赛码网的编译环境
var line;
while(line = read_line()){
line = line.split(' ');
var money = line.pop();
var price=line;
print(reserveRoom(money,price));
}*/
function reserveRoom(money,price)
{
var memo = new Array(money + 1)fill(money);
memo[0]=0;//初始条件很关键
for (var i = 1; i <=money; i++) {
for(var j = 0;j<price.length;j++){
if (i >= price[j])
{
memo[i]=Math.min(memo[i],memo[i-price[j]]+1);
}
}
}
return memo[money]===money?-1:memo[money];
}