解题思路:求出每一段路的最优情况,然后求得最小值
参考代码:
#include <iostream> #include <algorithm> using namespace std; int main(){ int value[11], dp[11]; int dis; for(int i = 1; i < 11; i++) cin >>value[i]; cin>>dis; dp[1] = value[1], dp[0] = 0; for(int i = 2; i < 11; i++) { int minn = value[i]; for(int j = i - 1; j >= i / 2; j--) { minn = min(minn,dp[j]+dp[i-j]); } dp[i] = minn;//该段路程的最少费用 } int res = dis/10*dp[10] + dp[dis%10]; for(int i = 1; i < 10; i++) res = min(res, dp[i]*(dis/i)+dp[dis%i]); cout << res <<endl; return 0; }
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:681 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:473 |
【偶数求和】 (C++代码)浏览:702 |
弟弟的作业 (C++代码)浏览:1295 |
C语言训练-排序问题<1> (C++代码)浏览:589 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
数组输出 (C语言代码)错误???浏览:560 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:512 |
Minesweeper (C语言描述,蓝桥杯)浏览:1122 |
Quadratic Equation (C语言代码)浏览:988 |