贪心算法—Problem G
2016-03-18 17:08
218 查看
贪心算法—Problem G
题意
一部电梯,起始在0层,输入一组数据表示楼梯先后到达的层数。已知每向上一层时间为6s,下降一层4s,每到达一次指定的楼层就停留5s,求输入一组数据,输出走完这些楼层所需要的总时间。
解题思路
建立数组存储楼层,第一个数据肯定在0上直接乘6s;其余的建立循环遍历,比较与前一个楼层的大小并把两者之间的差值乘6或4;最后再加上每一个目的楼层停留的时间,即总时间。
感想
不知道此题是否属于贪心算法,但好像我的做法并不是贪心,但提交后AC了,也不知前后如果两个楼层相同的话是否应该再加停留时间,结果是第一次提交时WA,而注释掉那句代码后,AC了。所以可能要算上。
AC代码
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
int a[101];
while(cin>>n,n)
{
int i,j,count;
inttime = 0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
cin>>a[i];
}
j=0;
count=n;
time=a[j]*6;
for(i=1;i<n;i++,j++)
{
if(a[i]>a[j]) time+=(a[i]-a[j])*6;
else if(a[i]<a[j]) time+=(a[j]-a[i])*4;
}
time+=5*count;
cout<<time<<endl;
}
}
题意
一部电梯,起始在0层,输入一组数据表示楼梯先后到达的层数。已知每向上一层时间为6s,下降一层4s,每到达一次指定的楼层就停留5s,求输入一组数据,输出走完这些楼层所需要的总时间。
解题思路
建立数组存储楼层,第一个数据肯定在0上直接乘6s;其余的建立循环遍历,比较与前一个楼层的大小并把两者之间的差值乘6或4;最后再加上每一个目的楼层停留的时间,即总时间。
感想
不知道此题是否属于贪心算法,但好像我的做法并不是贪心,但提交后AC了,也不知前后如果两个楼层相同的话是否应该再加停留时间,结果是第一次提交时WA,而注释掉那句代码后,AC了。所以可能要算上。
AC代码
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
int a[101];
while(cin>>n,n)
{
int i,j,count;
inttime = 0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
cin>>a[i];
}
j=0;
count=n;
time=a[j]*6;
for(i=1;i<n;i++,j++)
{
if(a[i]>a[j]) time+=(a[i]-a[j])*6;
else if(a[i]<a[j]) time+=(a[j]-a[i])*4;
}
time+=5*count;
cout<<time<<endl;
}
}
相关文章推荐
- spring注解与xml同时使用:bean命名问题及冲突
- ios网络_json数据解析
- 类加载器-双亲委托
- 工厂模式
- (六)ExtJs小例子之窗体组件(Window)
- c++实现链表
- 使用markdown
- 实现在CMD中用命令运行apache
- 使用Xshell&Xftp实现远程登录及文件传输
- SQL语言介绍
- 1.ArrayAccess(数组式访问)接口
- HDU 4585 平衡树Treap
- java中图片格式转换
- 【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- 把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;
- java多线程
- org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- Struts2+Jquery实现ajax并返回json类型数据
- 字符串反转
- Dos.ORM使用教程