PAT程序设计考题——甲级1008(Elevator电梯时间计算问题)

来源:互联网 发布:excel表格制作软件 编辑:程序博客网 时间:2024/06/05 23:07

题目原文链接:点击打开链接

题目翻译如下:

假设程序输入为电梯楼层请求的序列,现需要按照序列中的楼层号的顺序依次走完各个楼层,其中上楼阶段每上一层的时间是6,每到一个楼层停留的时间是5,下路阶段每下一层的时间的4,现设定电梯初始位置在0层,电梯完成任务后无需回到0层初始位置。

例子:

input:

3 2 3 1

output:

41

楼层请求的顺序是3 2 1,从0层出发,依次经过上述三个楼层,计算出总时间是41。


代码设计如下:

#include <stdio.h>#include <stdlib.h>#include <string.h>char* dot = NULL;char* buffer = NULL;int* array = NULL;int length = 0;int sum = 0;int main(){buffer = (char*)malloc( 100*sizeof(char));array = (int*)malloc( 100*sizeof(int));array[0] = 0;length++;printf( "Please input the Elevator List\n");scanf( "%[^\n]", buffer );dot = strtok( buffer, " " );while ( dot != NULL ){int found = false;for ( int i = 0; i < length; i++ ){if ( array[i] == atoi(dot) ){found = true;}}if ( !found ){array[length++] = atoi(dot);}dot = strtok( NULL, " " );}for ( int k = 1; k < length; k++ ){if ( array[k] > array[k-1] ){sum += 6*( array[k] - array[k-1] );}else{sum += 4*( array[k-1] - array[k] );}sum += 5;}printf( "%d\n", sum );free(buffer);free(array);return 0;}


0 0