问题标题: 酷町堂:体力花费最小

0
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
黄硕梁
黄硕梁
初级天翼
初级天翼

据我看,这孩子没救了

我要回答