乘电梯

本文介绍了一个计算电梯运行时间的问题,并通过排序算法优化了解决方案。具体地,文章给出了一个具体的编程实现案例,通过冒泡排序将乘客的目的楼层按升序排列,从而更有效地计算电梯从起点到终点再返回起点所需的总时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

乘电梯(10分)

题目内容:

1教有一部电梯,每往上一层需要6秒钟,每往下一层需要4秒,每开一次门需要5秒,假设现在有N个人需要从第0层乘坐电梯上楼,请计算完成本趟运行所需要的时间。

说明:

1、假设最开始电梯在0层,N个人从第0层进电梯,中间不再增添新乘客;

2、N个人都到达各自的楼层后,电梯需要回到0层;

3、到同一楼层的人不管有几人,电梯开门的时间总共只需要5秒.

输入格式:

输入数据首先包含一个整数N(0 < N <= 10),表示电梯内的人数;然后是N个人要到的楼层Si( 1 <= Si <= 100 )。

输出格式:

计算并输出完成本趟运行需要的时间。

输入样例:

4 5 3 2 5

输出样例:

65

时间限制:500ms内存限制:32000kb

#include<stdio.h>
int main()
{
	int a[10],N,i,t=0,flag=1,max,j;
	scanf("%d",&N);
	for(i=0;i<N;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0;i<N-1;i++)
	{
		for(j=0;j<N-i-1;j++)
		if(a[j]>a[j+1])
		{
			max=a[j];
			a[j]=a[j+1];
			a[j+1]=max;
		}
	}
	t=a[0]*6;
	for(i=0;i<N-1;i++)
	{
		if(a[i]!=a[i+1])
		{
		t=t+5+(a[i+1]-a[i])*6;
		flag=1;
	    }
		else if(a[i]==a[i+1]&&flag==1)
		{
			flag=0;
		}
	}
	t=t+5+a[N-1]*4;
	printf("%d",t);
	return 0;
}

最开始做这道题没排序直接按所给顺序计算,发现结果不对。
原来当几个人是相同楼层的时候就可以一起下去了,而且也不是来回上下的,先进行了由小到大排序,之后就不需要在进行比较大小。
要注意题目中“到同一楼层的人不管有几人,电梯开门的时间总共只需要5秒”,遍历数组的时候发现先相同的数就不需要+5了。
本题考察了了冒泡排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值