题目原文链接:点击打开链接
题目翻译如下:
假设程序输入为电梯楼层请求的序列,现需要按照序列中的楼层号的顺序依次走完各个楼层,其中上楼阶段每上一层的时间是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;
}