杭电acm——1008电梯问题
2016-07-18 08:17
323 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1008
问题分析:输入第一行n代表有几组数,输入第二行m代表电梯要停几层,随后跟着输入m个数代表要电梯停的楼层
每上一层楼电梯要用6分钟,每下一层楼电梯要用4分钟,在楼层中停要用5分钟
可以发现:只要比较相邻两个数,只要前者小于后者就表示电梯上升,所用时间=(后者-前者)*6;只要前者大于后者就表示电梯下降,所有时间=(前者-后者)*4;而电梯停止所用的时间=m*5;千万不要忘记加上电梯到第一个楼层所用的时间=a[1]*6;再将所有时间加起来就等于所要求得时间。
#include <iostream>
using namespace std;
int main()
{
int n,a[100],i,s,x,y;
while(cin>>n&&n!=0)
{
for(i=1;i<=n;i++)
{
cin>>a[i];
}
s=x=0;
for(i=1;i<n;i++)
{
if(a[i]<a[i+1])
s+=(a[i+1]-a[i])*6;
if(a[i]>a[i+1])
x+=(a[i]-a[i+1])*4;
}
y=(n*5)+s+x+a[1]*6;
cout<<y<<endl;
}
return 0;
}
问题分析:输入第一行n代表有几组数,输入第二行m代表电梯要停几层,随后跟着输入m个数代表要电梯停的楼层
每上一层楼电梯要用6分钟,每下一层楼电梯要用4分钟,在楼层中停要用5分钟
可以发现:只要比较相邻两个数,只要前者小于后者就表示电梯上升,所用时间=(后者-前者)*6;只要前者大于后者就表示电梯下降,所有时间=(前者-后者)*4;而电梯停止所用的时间=m*5;千万不要忘记加上电梯到第一个楼层所用的时间=a[1]*6;再将所有时间加起来就等于所要求得时间。
#include <iostream>
using namespace std;
int main()
{
int n,a[100],i,s,x,y;
while(cin>>n&&n!=0)
{
for(i=1;i<=n;i++)
{
cin>>a[i];
}
s=x=0;
for(i=1;i<n;i++)
{
if(a[i]<a[i+1])
s+=(a[i+1]-a[i])*6;
if(a[i]>a[i+1])
x+=(a[i]-a[i+1])*4;
}
y=(n*5)+s+x+a[1]*6;
cout<<y<<endl;
}
return 0;
}
相关文章推荐
- svg常用简单示例
- 佛前十不求
- .NET Core全新路线图
- awk 系列:如何使用 awk 和正则表达式过滤文本或文件中的字符串
- [leetcode] 198. House Robber
- 自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()
- docker – 你应该知道的10件事
- 解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题
- .NET Core全新路线图
- 月光微博客
- MySQL 数据库性能优化之SQL优化
- delphi 强制退出死循环,要设置label标签
- 百度地图
- 最大公约数与最小公倍数
- Yii框架的session入库
- Wifi小车之 - STM32无线视频篇
- [JZOJ4654]彩色格子
- Linux vmstat命令实战详解
- JZOJ3453. 【NOIP2013中秋节模拟】连通块(connect)
- python学习——图形界面