天天看點

PAT (Advanced Level) Practice 1001~102010011002100310041005100610071008 Elevator100910101011101210131014101510161017101810191020

文章目錄

  • 1001
  • 1002
  • 1003
  • 1004
  • 1005
  • 1006
  • 1007
  • 1008 Elevator
  • 1009
  • 1010
  • 1011
  • 1012
  • 1013
  • 1014
  • 1015
  • 1016
  • 1017
  • 1018
  • 1019
  • 1020

1001

1002

1003

1004

1005

1006

1007

1008 Elevator

簡單的數學問題,注意三點:

  • 要注意輸入數字序列的第一個數字是 n 而不是樓層。
  • 實際情況下, 不僅要考慮到電梯的上升下降,還需要考慮繼續等待的情況。比如出現連續的兩個1,就表明需要在目前樓層多等待5秒。
  • 到達輸入序列的最後一個樓層後依然要等待5秒,不要進行特判。
#include<cstdio>
using namespace std;

int main()
{
    int n, total; // total 為總花費時間
    int preFloor, newFloor; // preFloor 為目前樓層, newFloor 為要去的樓層
    scanf("%d", &n);
    total = preFloor = 0; // 初始化
    while (n--)
    {
        scanf("%d", &newFloor); // 輸入要去的樓層
        if (newFloor > preFloor) // 如果需要上升
        {
            total += (newFloor - preFloor) * 6 + 5;
        }
        else // 如果需要下降或者繼續等待
        {
            total += (preFloor - newFloor) * 4 + 5;
        }
        preFloor = newFloor; // 更新目前樓層的值
    }
    printf("%d\n", total);

    return 0;
}

           

1009

1010

1011

1012

1013

1014

1015

1016

1017

1018

1019

1020

一定要自己寫一遍哦~~