问题链接:HDU1008 ZOJ2108 Elevator。基础训练题,用C语言编写程序。
每行的数据有n+1个数据,第一个数据是n,然后是n个数据,即n个要停的层的数据。
电梯开始在0层,上一层需要6秒,下一层需要4秒,停一次需要5秒。电梯最后不需要回到0层。
问题是把所有人都送到各层总共需要多少时间。
AC程序如下:
- /* HDU1008 ZOJ2108 Elevator */
- #include <stdio.h>
- //#include <stdlib.h>
- #define MAXN 100
- int main(void)
- {
- int n, stop[MAXN+1], count, i;
- int currposit;
- while(scanf("%d", &n) != EOF) {
- // 判断结束条件
- if(n == 0)
- break;
- // 读入数据
- for(i=0; i<n; i++)
- scanf("%d", &stop[i]);
- // 计算
- count = 0;
- currposit = 0; // 电梯开始在0层
- for(i=0; i<n; i++) {
- if(stop[i] > currposit)
- count += (stop[i] - currposit) * 6;
- else
- count += (currposit - stop[i]) * 4;
- count += 5;
- currposit = stop[i];
- }
- // 输出结果
- printf("%d\n", count);
- }
- return 0;
- }
/* HDU1008 ZOJ2108 Elevator */
#include <stdio.h>
//#include <stdlib.h>
#define MAXN 100
int main(void)
{
int n, stop[MAXN+1], count, i;
int currposit;
while(scanf("%d", &n) != EOF) {
// 判断结束条件
if(n == 0)
break;
// 读入数据
for(i=0; i<n; i++)
scanf("%d", &stop[i]);
// 计算
count = 0;
currposit = 0; // 电梯开始在0层
for(i=0; i<n; i++) {
if(stop[i] > currposit)
count += (stop[i] - currposit) * 6;
else
count += (currposit - stop[i]) * 4;
count += 5;
currposit = stop[i];
}
// 输出结果
printf("%d\n", count);
}
return 0;
}