HDU --- 1008 Elevator

来源:互联网 发布:csgo优化帧数参数 编辑:程序博客网 时间:2024/04/27 18:26
#include<stdio.h>
int main(){
    int a[110],n;
    while(scanf("%d",&n)==1){
        int sum=0,k;
        if(n==0) return 0;
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        sum+=(a[0]*6+5);
        for(int i=1;i<n;i++){
            if(a[i]>a[i-1])
                sum+=((a[i]-a[i-1])*6+5);
            else if(a[i]==a[i-1])
                sum+=5;
            else sum+=((a[i-1]-a[i])*4+5);
        }
        printf("%d\n",sum);
    }
    return 0;
}

//刚开始做时 把这一正数序列存入数组 并找到数组中最大的数 进而判断上楼最高上到几楼 再根据最后一个元素判断下到几楼 题中样例运行结果对 提交却不对 其实 这样我没有考虑 电梯在同一楼层的情况 如 :4 2 3 3 1 ,3 2 2 2 这类数据  

//以下是错误代码 若同时存在二个或多个最大值 则在第一个最大值出现之后 把它当做下楼时间来处理了而不是正常电梯应停留的时间

#include<stdio.h>
int main(){
    int a[110],n;
    while(scanf("%d",&n)==1){
        int d1,d2,d,max=0,k;
        if(n==0) return 0;
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(int i=0;i<n;i++){
            if(a[i]>max){
                max=a[i];
                k=i;
            }
        }
        if(k<n){
            d1=a[k]*6+k*5;
            d2=(a[k]-a[n-1])*4+(n-k)*5;
            d=d1+d2;
        }
        else if(k==n)
            d=a[k]*6+(k-1)*5;
        printf("%d\n",d);
    }
    return 0;
}

0 0