杭电oj1008——c语言
这道题的ac率很高,所以我跳过了几道先看这个,但对于新手的我来说还是有一些难点的
题目分析:首先输入第一个数N作为电梯要停的次数,接着输入N个数作为电梯要停的层数,需要用到两个while循环
#include <stdio.h>
int main()
{
int n;
int T;
int to_floor;
int second=0;
while(scanf("%d",&n)!=EOF&&n){//没有可获取的值 或n=0时跳出循环
int now_floor=0;//now_floor必须在此处清零才能保证后续测试的准确
second=5*n;
while(n--)//当N=0时跳出循环,并且每次循环递减1,最后N的值为-1
{
scanf("%d",&T);
to_floor=T;
second+=to_floor>now_floor?(to_floor-now_floor)*6:(now_floor-to_floor)*4;
now_floor=to_floor;
}
printf("%d\n",second);
}
}
反思:1.刚开始做的时候理解错了题目,以为例子中的“1 2”的意思是先到1层,再到2层,导致我自己得到的测试结果是错误的而且参考别人的代码也完全看不懂;学好英语很重要!认真审题也很重要
2.做题太少很多点根本没想到
总结:
1.
while(n--)//当N=0时跳出循环,并且每次循环递减1,最后N的值为-1
这个我是第一次见
2.
second+=to_floor>now_floor?(to_floor-now_floor)*6:(now_floor-to_floor)*4;看到这个的时候惊艳到我了,我自己怎么就没想到,还打了一大堆乱七八糟的if else3.while(scanf("%d",&n)!=EOF&&n){//没有可获取的值 或n=0时跳出循环