Num 1: 北大OJ: 2703:骑车与走路

来源:互联网 发布:泉州网络教育 编辑:程序博客网 时间:2024/04/28 04:27


原题链接


动态数组的典型例题

动态数组的一般算法:

#include<malloc.h>

int main()

{

     int n;                                                       //    动态数组的元素个数;

     scanf("%d",&n);                                    //    通过scanf输入;

     int shuzu=(int*)malloc(sizeof(int)*n);  //    分配空间;

     … …

     free(shuzu);                                           //    最后要释放空间;

     return 0;

}



原文题目:


描述
在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米.请判断走不同的距离去办事,是骑车快还是走路快.
输入
第一行为待处理的数据的数量n
其后每一行整数为一次办事要行走的距离,单位为米.
输出
对应每个整数,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All".
样例输入
45090120180
样例输出
WalkWalkBikeBike

AC代码:


#include <stdio.h>#include <stdlib.h>#include<malloc.h>int main(){    float bike,walk;    int n,i;    scanf("%d",&n);    int *length=(int*)malloc(sizeof(int)*n);    int *flag=(int*)malloc(sizeof(int)*n);     //    通过建立一个标志(flag)来实现对结果的存储;    for(i=0;    i<n;    i++)    {        scanf("%d",&length[i]);        bike=(27.0+23.0+length[i]/3.0);        walk=length[i]/1.2;        if(walk>bike) flag[i]=0;        if(walk==bike) flag[i]=2;        if(walk<bike) flag[i]=1;    }        for(i=0;    i<n;    i++)    {        if(flag[i]==0) printf("Bike\n");        if(flag[i]==1) printf("Walk\n");        if(flag[i]==2) printf("All\n");    }    free(length);    free(flag);    return 0;}


0 0