宋哥哥


私信TA

用户名:630591905

访问量:7694

签 名:

等  级
排  名 806
经  验 3570
参赛次数 3
文章发表 9
年  龄 0
在职情况 学生
学  校 迦南魔法学院
专  业

  自我简介:

解题思路:如果输入-10  8  -20  12  25

-10
8
-20
12
25
10
8
20
12
25
8
10
12
20
25
8
-10
12
-20
25

感冒的蚂蚁所在位置



第一行表格,把你输入的数据放入arr

第二行:把数据变为正数,方便排序

第三行:排序,为了知道感冒体的位置

第四行:把蚂蚁的方向再标记出来,得知感冒体的位置。

注意事项:
自己画图思考一下,当第一个感冒的蚂蚁初始向左时,如果左边有和它相反方向的蚂蚁,会不会都感冒,会的!那么掉头之后,右边如果有相反方向的蚂蚁,会不会都感冒?答案也是会的。反之亦然。自己想想哦。


参考代码:

 Scanner in=new Scanner(System.in);
      int n=in.nextInt();//蚂蚁的个数
      int arr[]=new int[n];//用一个数组来存放数据
      int brr[]=new int[n];//用另一个数组来存放负数
      int num=0;//用num来存放arr[0]也就是感冒的那个数
      for(int i=0;i<n;i++)
      {
          arr[i]=in.nextInt();
          if(i==0)
          {
              num=arr[i];
          }
          if(arr[i]<0)          //把arr[i]中的数全变为正数
          {
              brr[i]=arr[i];
              arr[i]=-arr[i];
          }
          
      }
      
      Arrays.sort(arr);//把arr中的数据排序一下,知道距离
      
      for(int i=0;i<n;i++)     //相当于给arr数组中的蚂蚁,把方向添加一下
      {
          for(int j=0;j<n;j++)
          {
              if(arr[i]==-brr[j])
              {
                  arr[i]=-arr[i];
              }
          }
      }
      int wei=0;
      for(int i=0;i<n;i++) //把感冒的蚂蚁排在第几个给wei
      {
          if(num==arr[i])
              wei=i;
      }
      int count=1;
      
      if(num<0)//如果蚂蚁初始方向是向左
      {
          for(int i=0;i<wei;i++)
          {
              if(arr[i]>0) //因为感冒会掉头,感冒蚂蚁左边只要有向右的,一定被感染,所以count++
              {
                  count++;
              }
          }
          
          for(int i=wei+1;i<n;i++)
          {
              if(count>=2)//当蚂蚁掉头的时候,count肯定大于2的,所以这个时候才会计算右边的情况
              {
                  if(arr[i]<0)
                      count++;
              }
          }
      }
      if(num>0)
      {
          for(int i=wei+1;i<n;i++)
          {
              if(arr[i]<0)
              {
                  count++;
              }
          }
          
          for(int i=0;i<wei;i++)
          {
              if(count>=2)
              {
                  if(arr[i]>0)
                  {
                      count++;
                  }
              }
          }
      }
      System.out.println(count);
      
      
    }

}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区