解题思路:
思路:看看图 有什莫想法
黑色代表 首只感冒蚂蚁 红色代表 会感冒蚂蚁 蓝色代表 不会感冒
蚂蚁向碰头 都转向 可看作 都不转向 看成擦肩而过
图 1 2 为一般情况 3 4 为特殊情况 仔细想想 或画图 看看
(两只蚂蚁相遇各自反向可以看作是两只蚂蚁分别继续前进,
然后假如感冒蚂蚁向左行,则会感染它左边所有向右行的蚂蚁,因为它继续向左行,
别感染的第一只蚂蚁继续向右行,感染所有它右边向左行的蚂蚁。)
原文(含有模拟和非模拟版) 欢迎访问 我的博客
注意事项:
参考代码:
#include<stdio.h> int abss(int s)//取绝对值 { if(s<0)return -s; else return s; } int main() { int qans=0,hans=0,n,i,gm,s; scanf("%d",&n); scanf("%d",&gm);//gm 首个感冒蚂蚁 位值 for(i=1;i<n;i++) { scanf("%d",&s); if(abss(gm)<abss(s)&&s<0)hans++;//当在首个蚂蚁右侧并且反向 必感冒 if(abss(gm)>abss(s)&&s>0)qans++;//当在首个蚂蚁左侧并且正向 必感冒 } if(gm>0&&hans!=0||gm<0&&qans!=0)printf("%d",qans+hans+1); else printf("1");//当首个感冒蚂蚁方向为正时 在首个蚂蚁右侧并且反向 为 0 或 return 0; //当首个感冒蚂蚁方向为负时 在首个蚂蚁左侧并且反向 为 0 则不会被感冒除首个感冒 }
0.0分
66 人评分
#include<stdio.h> #include<math.h> int main()//用绝对值判断相对位置,用符号来判断走的方向 { int sum=1;//一开始的感染数 int n,first,s,i; scanf("%d",&n); scanf("%d",&first);//首个感冒蚂蚁位置 for(i=1;i<n;i++) { scanf("%d",&s); if(abs(first)<abs(s)&&s<0) { sum++; }//当在首个蚂蚁右侧并且反向必感冒 if(abs(first)>abs(s)&&s>0) { sum++;//当在首个蚂蚁左侧并且正向必感冒 } } printf("%d",sum); return 0; }
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:597 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1140 |
简单的a+b (C语言代码)浏览:526 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:875 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:697 |
循环入门练习5 (C语言代码)浏览:830 |
【偶数求和】 (C语言代码)浏览:430 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:534 |
上车人数 (C语言代码)浏览:710 |
melody 2023-03-19 16:32:36 |
为什么不用判断first正负
秋刀鱼不过期 2023-04-02 19:08:41 |
有问题诶,当首个感冒蚂蚁方向为负且左侧没有蚂蚁的时候,“在首个蚂蚁右侧且反向必感冒”是错误的