cxxiaoguo


私信TA

用户名:guowenwu

访问量:32805

签 名:

累死自己卷死你们

等  级
排  名 131
经  验 7634
参赛次数 8
文章发表 62
年  龄 0
在职情况 学生
学  校 成都信息工程大学
专  业 人工智能

  自我简介:

TA的其他文章

解题思路:

主要是找到规律,根据初始状态,既可以判断出感冒蚂蚁数量。

注意事项:
当感冒蚂蚁走的方向上的其他蚂蚁都走这个方向,或这这个方向上没有蚂蚁,那么感冒的蚂蚁就是一个。

其他情况小感冒蚂蚁数等于(初始状态时)在感冒蚂蚁前方与感冒蚂蚁形式方向相反的蚂蚁+感冒蚂蚁后面与感冒蚂蚁相同方向的蚂蚁;




参考代码:

#include<stdio.h>

#include<math.h>

int main(){

int a[50],i,j=0,n,mun=0,k=0;    // mun 统计感冒蚂蚁数;

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",&a[i]);

if(a[0]<0){                      //当感冒蚂蚁向左时

for(i=0;i<n;i++){

if(fabs(a[i])<fabs(a[0])){ 

k++;

if(a[i]<0)j++;

}

if(k==j||k==0)mun=0;          // 感冒蚂蚁方向上没有蚂蚁或者蚂蚁都与感冒蚂蚁一个方向

else{

// 感冒蚂蚁左边有与感冒蚂蚁前进方向相反的或感冒蚂蚁右边有与感冒蚂蚁相同方向的蚂蚁,感冒蚂蚁数量都加一

for(i=0;i<n;i++){

if(fabs(a[i])<fabs(a[0])){      

if(a[i]>0)mun++;}

else {

if(a[i]<0)mun++;

}

}

}

}

else{                //感冒蚂蚁朝向另一个方向,算法完全相同

for(i=0;i<n;i++){

if(fabs(a[i])>fabs(a[0])){ 

k++;

if(a[i]>0)j++;

}

if(k==j||k==0)mun=0;

else{

for(i=0;i<n;i++){

if(fabs(a[i])>fabs(a[0])){

if(a[i]<0)mun++;}

else {

if(a[i]>0)mun++;

}

}

}

}

printf("%d",mun);

}


 

0.0分

0 人评分

  评论区

  • «
  • »