某城市最高的楼只有一部电梯。该电梯和一般电梯不同的是它依照输入楼层数的先后次序运行。电梯最初在0层。运行完一个输入序列后就停止在该楼层,不返回0层。编写程序计算电梯运行一个序列的时间。每次都假设电梯在0层开始,无论上一次运行到几层。电梯每上1层需要6秒。每下1层需要4秒。如在某层停留,无论上下人多少,均停留5秒。
输入:程序可以输入多行。每行的第一个数N指示后面将有N个楼层的序列。楼层的值大于等于1,小于100。N=0表示结束输入。
输出:计算每个序列电梯运行的时间。
输入:
1 2 3 2 3 1 0
输出:
17 41
【C语言编程题】电梯时间问题
答案:3 悬赏:60 手机版
解决时间 2021-02-27 14:45
- 提问者网友:捧腹剧
- 2021-02-27 11:19
最佳答案
- 五星知识达人网友:一秋
- 2021-02-27 11:59
#include<stdio.h>
#include<string.h>
int main()
{
int a[100];
int b, t, i;//b为层数差
int sum = 0;
a[0] = 0;
//sum = 0;
for (i = 1; i <= 100; i++)
{
scanf("%d", &a[i]);
if ((a[i] == '\n')||(a[i]==0))
break;
b = a[i] - a[i-1];
//printf("%d\n", b);
if (b > 0)
t = b * 6;
else t = b * (-4);
sum += (t + 5);
}
printf("%d", sum);
return 0;
}
全部回答
- 1楼网友:罪歌
- 2021-02-27 14:32
#include <stdio.h>
using namespace std;
int i,n,x,ans,sum;
int main(){
while(1){
scanf("%d",&n);
if(n==0)
break;
sum=ans=0;
for(i=1;i<=n;i++){
scanf("%d",&x);
//printf("%d %d\n",sum,ans);
if(x>ans)
sum+=(x-ans)*6;
else
sum+=(ans-x)*4;
ans=x;
sum+=5;
//printf("%d %d\n",sum,ans);
}
printf("%d\n",sum);
}
return 0;
}
望采纳,谢谢
- 2楼网友:duile
- 2021-02-27 13:18
这个问题主要还是一个物理题,相信都坐电梯,但没有仔细研究,它的运行过程就是一个需求:
1、按下x楼层,并记录按下的时间顺序;1.1、当前电梯不在此楼层;1.2、电梯在此楼层;
2、若电梯不在此楼层,先运行至此楼层开门,否则直接开门,消除请求信息;
3、电梯先加速,再匀速,再减速至x楼层;
4、如果去x楼层的途中,遇到有同向的楼层按下,则先停靠在该楼层,然后再进行步骤3;
5、运行至x楼层后,消除当前请求x楼层信息,如果有其他楼层已经按下,则转到最先按下的楼层的方向(中途有其他的请求,顺便带上),如果没有请求,则停止在x楼,等待!
6、两部电梯的话,主要考虑哪个有空闲,只要空闲就优先执行重复以上1~5步骤。
数据结构的话主要有:电梯当前所在楼层,目标楼层x,中途请求系列,是否已完成;
问题是属于比较复杂的那种,还是要自己多思考思考怎么写文档才是,越详细越好,想清楚了,实现应该是比较简单的!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯