0
已解决
赵泰来
高级光能
高级光能
题目描述 Description
有一个n阶的楼梯,某人从第0阶出发,每次可向上跨越1~k个台阶,且当他一次跨越i个台阶时会花费ai点体力值,问当他正好到达第n个台阶时花费的体力值总和最小是多少?
输入描述 Input Description
输入有两行,
第一行输入两个正整数n和k;(k<n<1000)
第二行输入k个正整数,第i个数ai表示一次跨越i级台阶所花费的体力值(ai<100)
输出描述 Output Description
输出到达第n个台阶时花费体力的最小值
样例输入 Sample Input
6 3 2 3 4
样例输出 Sample Output
8
数据范围及提示 Data Size & Hint
对于6级台阶,可以先爬3阶,花费4点体力值,再爬3阶,花费4点体力值,总共花费8点体力值,这种方案花费体力最少。
救救孩子吧!
0
0
0
汪恺恒
中级启示者
中级启示者
很简单
for(int i=1;i<=n;i++){
f[i]=0x3f3f3f3f;
for(int j=1;j<=k;j++){ //往下j步
if(i>=j){
f[i]=min(f[i],f[i-j]+a[j]);//如果可行,就是i-j步的最小值+a[j]
}
}
}
0
0