• 新博客的第一道题 蓝桥杯 蚂蚁感冒


    题意呢,就是有n只蚂蚁在杆子上,给出每只蚂蚁的坐标,他们头的朝向不同,有的向左,有的向右,他们以每分钟(还是每秒钟来着了……)一厘米的速度移动,两只蚂蚁碰头的时候两只都会向相反方向走,第一只蚂蚁感冒了(阿嚏……),和它接触的每只蚂蚁都会感冒,问当所有蚂蚁爬离杆子,有多少只感冒的

    思路呢,因为所有速度相同,所以谁都追不上谁……然后呢这只感冒的蚂蚁面向的方向和他朝向相反的蚂蚁都会感冒(阿嚏……阿嚏……阿嚏……),如果他前面没有朝向和他相反的,那到最后就这一只蚂蚁感冒……如果有的话,不仅前面的蚂蚁会感冒,它后面的和它原来朝向相同的蚂蚁也会感冒,思路很清晰,代码不难,但是不太好想……

    这道题练习的时候judge错了,本来做过一遍了,顺利地打完代码交上去发现错了,不由得开始质疑人生……

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<math.h>
     6 using namespace std;
     7 int main(){
     8     int n;
     9     while(~scanf("%d",&n)){
    10         int a;
    11         int tou[105],sum=0;
    12         int ganmao;
    13         scanf("%d",&ganmao);
    14         memset(tou,0,sizeof(tou));
    15         for(int i=0;i<n-1;i++){
    16             scanf("%d",&a);
    17             if(a<0) {a*=-1;tou[a]=-1;}
    18             else tou[a]=1;
    19         }
    20         if(ganmao>0){
    21             for(int i=ganmao;i<=100;i++){
    22                 if(tou[i]==-1) sum++;
    23             }
    24             if(sum){
    25                 for(int i=ganmao;i>=0;i--){
    26                     if(tou[i]==1) sum++;
    27                 }
    28             }
    29         }
    30         else if(ganmao<0){
    31             ganmao*=-1;
    32             for(int i=ganmao;i>=0;i--){
    33                 if(tou[i]==1) sum++;
    34             }
    35             if(sum){
    36                 for(int i=ganmao;i<=100;i++){
    37                     if(tou[i]==-1) sum++;
    38                 }
    39             }
    40         }
    41         printf("%d
    ",sum+1);
    42     }
    43     return 0;
    44 }
    45 //数值蚂蚁离开杆子左边端点的距离 正值表示头朝右 负值表示头朝左
    View Code
  • 相关阅读:
    第三章例3-3
    第三章例3-2
    第二章例2-11
    第二章例2-10
    第二章例2-9
    204
    205
    202
    203
    201
  • 原文地址:https://www.cnblogs.com/general10/p/5244101.html
Copyright © 2020-2023  润新知