寒假作业2-1

电梯作业:

第一次:

第一次阅读到题目的时候可谓是一脸懵逼,在班群中看到同学们的讨论之后,还是一头雾水的决定先采用一位来便先接一位乘客的方式,因为这种方式较简单,所以代码长度为112行,但是包括理解题目和在班群里看同学分享思路的时间还是用了一晚上。
以下为代码:

#include <stdio.h>

int main() {
    // insert code here...
    //printf("Hello, World!\n");
    int t1,f1,d1,s1;
    scanf("%d %d %d",&t1,&f1,&d1);
    int t2,f2,d2,s2 = 0;
    scanf("%d %d %d",&t2,&f2,&d2);
    int t3,f3,d3,s3 = 0;
    scanf("%d %d %d",&t3,&f3,&d3);
    int t4,f4,d4,s4 = 0;
    scanf("%d %d %d",&t4,&f4,&d4);
    int t5,f5,d5,s5 = 0,s;
    scanf("%d %d %d",&t5,&f5,&d5);
    
    //第一个操作
    if(d1==0)
        s1=10;
    else
        s1=1+1+f1-1;
    
    //第二个操作
    if(d1==0&&d2==0)
        s2=s1-t2+10-f2+1+10-f2;//s1-t2为等候的时间,10-f2为去接客人的时间,1为接上客人的时间,10-f2为送客人到顶层的时间
    if(d1==0&&d2==1)
        s2=s1-t2+10-f2+1+1;
    if(d1==1&&d2==0&&f1-1>=f2)
        s2=s1-t2+f1-1-f2+1+10-f2;//f1-1-f2为从第一个操作所停的位置去往接客位置的时间
    if(d1==1&&d2==0&&f1-1<f2)
        s2=s1-t2+f2-f1+1+1+10-f2;
    if(d1==1&&d2==1&&f1-1>=f2)
        s2=s1-t2+f1-1-f2+1+1;
    if(d1==1&&d2==1&&f1-1<f2)
        s2=s1-t2+f2-f1+1+1+1;
   
    //第三个操作
    if(d2==0&&d3==0)
        s3=s2-t3+10-f3+1+10-f3;
    if(d2==0&&d3==1)
        s3=s2-t3+10-f3+1+1;
    if(d2==1&&d3==0&&f2-1>=f3)
        s3=s2-t3+f2-1-f3+1+10-f3;
    if(d2==1&&d3==0&&f2-1<f3)
        s3=s2-t3+f3-f2+1+1+10-f3;
    if(d2==1&&d3==1&&f2-1>=f3)
        s3=s2-t3+f2-1-f3+1+1;
    if(d2==1&&d3==1&&f2-1<f3)
        s3=s2-t3+f3-f2+1+1+1;
    
    //第四个操作
    if(d3==0&&d4==0)
        s4=s3-t4+10-f4+1+10-f4;
    if(d3==0&&d4==1)
        s4=s3-t4+10-f4+1+1;
    if(d3==1&&d4==0&&f3-1>=f4)
        s4=s3-t4+f3-1-f4+1+10-f4;
    if(d3==1&&d4==0&&f3-1<f4)
        s4=s3-t4+f4-f3+1+1+10-f4;
    if(d3==1&&d4==1&&f3-1>=f4)
        s4=s3-t4+f3-1-f4+1+1;
    if(d3==1&&d4==1&&f3-1<f4)
        s4=s3-t4+f4-f3+1+1+1;
    
    //第五个操作
    if(d4==0&&d5==0)
        s5=s4-t5+10-f5+1+10-f5;
    if(d4==0&&d5==1)
        s5=s4-t5+10-f5+1+1;
    if(d4==1&&d5==0&&f4-1>=f5)
        s5=s4-t5+f4-1-f5+1+10-f5;
    if(d4==1&&d5==0&&f4-1<f5)
        s5=s4-t5+f5-f4+1+1+10-f5;
    if(d4==1&&d5==1&&f4-1>=f5)
        s5=s4-t5+f4-1-f5+1+1;
    if(d4==1&&d5==1&&f4-1<f5)
        s5=s4-t5+f5-f4+1+1+1;
    
    s=s1+s2+s3+s4+s5;
    
   if(d1==0)
       printf("%d时,停靠在10楼",s1);
    else
       printf("%d时,停靠在%d楼",s1,f1-1);
    if(d2==0)
        printf("%d时,停靠在10楼",s2);
    else
        printf("%d时,停靠在%d楼",s2,f2-1);
    if(d3==0)
        printf("%d时,停靠在10楼",s3);
    else
        printf("%d时,停靠在%d楼",s3,f3-1);
    if(d4==0)
        printf("%d时,停靠在10楼",s4);
    else
        printf("%d时,停靠在%d楼",s4,f4-1);
    if(d5==0)
        printf("%d时,停靠在10楼",s5);
    else
        printf("%d时,停靠在%d楼",s5,f5-1);
    
    printf("各乘客的等待时间总和为:%d",s);
    return 0;
}

第二次:

当然,第一种方式显然是不对的,并不是乘客等待时间的最优解。联系到现实生活中,我们坐电梯都是只有在电梯的运动方向和乘客所想要去往的方向相同时才可以接客。

第二个作业:

posted @ 2018-02-10 21:38  Ann826  阅读(137)  评论(0编辑  收藏  举报