1008 Elevator (20 分| 简单数学| 附详细注释,逻辑分析)

写在前面

  • 实现思路
    • 记录当前所在楼层、目的楼层,上差值乘6秒、下差值乘以4秒;每1次升降记录5秒停留时间
    • 更新当前所在楼层
    • 当前楼层等于目的楼层,记录停留时间,没想到)
  • 10分钟 题,当然前提是理解题意

测试用例

input:
3 2 3 1
output:
41

ac代码

#include
using namespace std;

int main()
{
    int n, total = 0, now = 0, to;
    scanf("%d", &n);

    for(int i=0; i<n; i++)
    {
        scanf("%d", &to);
        if(to > now) total += (to-now)*6 + 5;
        else if(to<now) total += (now-to)*4 + 5;
        else if(to==now) total += 5;
        now = to;
    }
    printf("%d", total);

    return 0;
}

学习代码

  • 相对更简洁,不赘述
#include 
using namespace std;
int main() {
    int a, now = 0, sum = 0;
    cin >> a;
    while(cin >> a) {
        if(a > now)
            sum = sum + 6 * (a - now);
        else
            sum = sum + 4 * (now - a);
        now = a;
        sum += 5;
    }
    cout << sum;
    return 0;
}

你可能感兴趣的:(算法比赛相关,PAT(甲级))