问题描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/f34390b4f32a4b369d6cf0ca3e6d20ee.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmx1ZU1vb24yMDAw,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6bd723c3026e4d50ad215a0b14767324.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmx1ZU1vb24yMDAw,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/efd27ae1e99a408a92bf5e5e30b67e6c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQmx1ZU1vb24yMDAw,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
问题分析
题目不难理解,求T(苹果的总数)和E(有苹果掉落的树的个数)也没什么难度,遍历数组进行判断就可以实现,这里略过(后面完整代码注释里会有)。
主要要解决的问题在于如何统计E(连续三棵树都有苹果掉落的个数)。首先题中是将所有果树种成一个圆的,而我们在存储题中所给的信息时一般是用数组的形式,所以在统计E的个数时,我们需要考虑数组头尾相接的情况。
这里我用一个int数组flag[N]来标记每一棵树是否有苹果掉落的情况,有掉落则为1;没有则为0。
然后我们只需要找出值连续为1的区间,统计其中连续三个一组的组数,最后在考虑一下首尾相接的情况就可以了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a8391c495aa4d43bd332c6502b3f95f.png#pic_center)
以上图情况为例&#