乘电梯(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了。
本题考察了了冒泡排序。