解题思路:
动态规划的思想,这里优化了一下,没有使用dp数组,降低空间复杂度,用两个int变量表示。
从起点到当前路段并返回的总时间 = 上一段路往返总耗时 + 当前路段往返耗时(dp[i] = dp[i-1] + dp[i])
注意事项:
参考代码:
#include <stdio.h> int getReturn(int u, int f, int d, char ch) { if (ch == 'f') { return f * 2; // 平地 } else { return u + d; // 上下坡 } } int main() { int M, T, U, F, D; scanf("%d %d %d %d %d", &M, &T, &U, &F, &D); int reach = 0; // 最终达到的路段数 int pre = 0, cur; // 前一段路耗时总耗时,当前路段耗时 char road; // 当前路段的情况(上坡、平底、下坡) for (int i = 0; i < T; i++) { getchar(); // 吸收上一行的换行符\n scanf("%c", &road); int t = getReturn(U, F, D, road); // 第i段路往返所需时间 cur = i == 0 ? t : pre + t; // 当前路段总耗时 = 前面路段总耗时 + 当前路段往返耗时 pre = cur; // 对于下一段路来说,更新它的前面路段总耗时 if (cur <= M) { reach++; } } printf("%d", reach); return 0; }
0.0分
1 人评分
简单的a+b (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1533 |
A+B for Input-Output Practice (VI) (C++代码)浏览:417 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
【金明的预算方案】 (C++代码)浏览:940 |
1012题解浏览:869 |
IP判断 (C语言代码)浏览:539 |
时间转换 (C语言代码)浏览:627 |
敲七 (C++代码)浏览:1056 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:806 |