PAT-Apat甲级题1008(python和c++实现)

文章讨论了如何通过数组处理电梯行程问题,涉及数组输入、处理楼层变化和时间计算的编程技巧。
摘要由CSDN通过智能技术生成

PTA | 1008 Elevator

1008 Elevator

作者 CHEN, Yue

单位 浙江大学

The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and 4 seconds to move down one floor. The elevator will stay for 5 seconds at each stop.

For a given request list, you are to compute the total time spent to fulfill the requests on the list. The elevator is on the 0th floor at the beginning and does not have to return to the ground floor when the requests are fulfilled.

Input Specification:

Each input file contains one test case. Each case contains a positive integer N, followed by N positive numbers. All the numbers in the input are less than 100.

Output Specification:

For each test case, print the total time on a single line.

Sample Input:

3 2 3 1

Sample Output:

41

万事开头难,先读题!

我们城市最高的大楼只有一部电梯。请求列表由N个正数组成。数字表示电梯将按特定顺序停在哪些楼层。电梯上升一层需要6秒,下降一层需要4秒。电梯在每一站停留5秒钟。

对于给定的请求列表,您要计算完成列表上的请求所花费的总时间。电梯开始时在0楼,当要求得到满足时不必返回地面楼层。
输入规范:

每个输入文件包含一个测试用例。每个case都包含一个正整数N,后面跟着N个正数。输入中的所有数字都小于100。
输出规格:

对于每个测试用例,在一行上打印总时间。
样品输入:

3 2 3 1

输出示例:

41

一遍题目读下来,可以提取到以下的信息:

        1, 输入一行,但是分为两个部分,第一个为电梯所经过的楼层数量,其余为具体楼层

        2, 上楼和下楼所花费的时间不一样,每层设置一个停留时间,且停留时间相同

        3, 电梯起始层数为0层,且结束后不必回到一层

综合上述内容,本题难度较低,重点是在于细节部分的处理,okk,接下来是熟悉的手搓代码时间!!!

首先,定义输入变量和输入数组,确定初始变量:上升一层所花费时间up=6,下降一层所需时间low=4,停留时间stop=5,定义cost用于记录花费时间,定义lastflow用于记录上一次的楼层位置

接下来,循环接收输入的楼层,并根据楼层变化确定花费的时间,值得注意的是,千万不要遗忘了,楼层下降时,计算得到的楼层差为负数,计算花费时间时需要注意这点!

由于本题思路较为简单,下面直接给出完整的代码,若有疑惑之处,欢迎评论区交流!

python:

lst = [int(i) for i in input().split()][1:]
up = 6
low = 4
stop = 5
lastflow = 0
cost = 0
for i in lst:
    cha = i - lastflow
    if cha > 0:
        cost += cha * up
    elif cha < 0:
        cost += -cha * low
    cost += stop
    lastflow = i
print(cost)

C++:


#include<bits/stdc++.h>
using namespace std;

int n;
int up=6,low=4,stop=5,cost,lastflow;

int main(){
    cin >> n;
    lastflow = 0;
    for(int i=0; i<n; i++){
        int temp;
        cin >> temp;
        int cha = temp - lastflow;
        if(cha > 0){
            cost += cha * up;
        }
        else{
            cost += (-cha) * low;
        }
        cost += stop;
        lastflow = temp;
    }
    cout << cost;
    
}

最后附上AK截图:

C++:

python:

引用[1]:因为ESP8266的模式也是AT指令的方式,也就是通过串口的方式进行设置。接下来简单的介绍一些常用的AT指令和调试的经验。基础AT指令:执行指令响应功能ATOK测试通信AT RSTOK重启模块AT RESTOREOK恢复出厂设置WIFI功能AT指令执行指令响应功能–––AT CWMODE? CWMODE:<mode> OK返回当前模块的模式AT CWJAP? CWJAP:<ssid> OK返回当前选择的APAT CIPSTA? CIPSTA:<ip> OK设置模块STA的IP地址AT CIPAP? CIPAP:<ip> OK设置模块AP的IP地址。[1] 引用[2]:说了这么多,其实市面上有非常多种类的8266,本项目使用的是ATK-esp8266,可以直接插在开发板上使用。使用的是哪个类的8266无所谓,因为整个esp8266的协议都是一模一样的,只要会了一个种类的,其他的自然就会了。[2] 引用[3]:模块初始化代码 u32 AS608Addr = 0XFFFFFFFF; //默认 //初始化PA6为下拉输入 //读摸出感应状态(触摸感应时输出高电平信号) void PS_StaGPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA时钟 //初始化读状态引脚GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//输入下拉模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO } // 对于官方的代码,建议不是很熟悉开发的不要改动配置[3] 问: stm32f103实现ASK 回答: 要在stm32f103上实现ASK(Amplitude Shift Keying)调制,你可以使用GPIO来控制信号的高低电平。首先,你需要初始化相应的GPIO引脚,例如PA6,将其设置为输入下拉模式。然后,你可以使用相应的库函数来配置GPIO引脚的模式和速度,例如使用GPIO_Init函数。在代码中,你可以使用GPIO_InitStructure结构体来设置GPIO的参数,例如设置引脚为输入下拉模式和50MHz的速度。最后,你可以使用GPIO_Init函数来初始化GPIO引脚。请注意,如果你对开发不太熟悉,建议不要随意更改配置。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值