杭电ACM 1008题,求救!

http://acm.hdu.edu.cn/showproblem.php?pid=1008/*-------------------------------------我的答案:*/#include<stdio.h>main(){while(1){ int n,m,s=0,a=0; scanf("%d",&n); if(n==0) return 0; while(n--){ scanf("%d",&m); if((m-s)>0){a+=(m-s)*6; a+=5;} if((m-s)<0){a+=(s-m)*4; a+=5;} s=m;} printf("%d尀n",a);}}/*-------------------------------------能AC的答案*/#include <stdio.h>int main(){ int n,sum,i,a[1000]={0}; while(scanf("%d",&n)!=EOF && n) { sum=0; for(i=1; i<=n; i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) { if(a[i]>a[i-1]) sum = sum+ (a[i] - a[i-1])*6+5; else sum = sum+(a[i-1] - a[i])*4+5; } printf("%d尀n",sum); } return 0;}
2026年09月27日 04:56
有1个网友回答
网友(1):


//*******************************************************************
//  杭电1008                Elevator     代码已AC
//  ACM站点有严格的格式要求。EOF退出循环就是其中之一
//  详情请查阅杭电ACM官网左上角的 F.A.Q 
//  另外LZ遗漏了一种情况: 在同一楼层暂停
//  如: 2 2 2
//  输出应该是 22 
//*******************************************************************
#include
int main()
{
    int n, m, s = 0, a = 0;
    while(scanf("%d", &n) != EOF)          // EOF退出循环 
    {
        //        int n, m, s = 0, a = 0; //建议变量定义放置在前面 
        //        scanf("%d", &n);
        s = 0, a = 0;
        if(n == 0)
            return 0;
        while(n--)
        {
            scanf("%d", &m);
            if((m - s) > 0)
            {
                a += (m - s) * 6;
                //                a += 5;
            }
            if((m - s) < 0)
            {
                a += (s - m) * 4;
                //               a += 5;
            }
            s = m;
            a += 5;  //每停一次加5秒,所以放置在后面,或者再加 
        }            //一个 if(m==s)  
        printf("%d\n", a);
    }
}
//*******************************************************************
//  祝学习进步,更上一层楼 *(^-^)*
//*******************************************************************