其他分享
首页 > 其他分享> > 201909-2 小明种苹果(续)

201909-2 小明种苹果(续)

作者:互联网


在这里插入图片描述
在这里插入图片描述

#include <iostream>

using namespace std;
struct info
{
    int left_num;
    int cut_num;
    //fall代表的是有没有出现掉落的情况
    int fall;
};
int main()
{
    int n,op_num,a,frist_num,all_left_num=0,D=0,E=0;
    cin>>n;
    info arr[n];
    for(int i=0;i<n;i++)
    {
        arr[i].cut_num=0;
        arr[i].fall=0;
        arr[i].left_num=0;
    }
    for(int i=0;i<n;i++)
    {
        cin>>op_num>>frist_num;
        arr[i].left_num=frist_num;
        for(int j=0;j<op_num-1;j++)
        {
            cin>>a;
            if(a<=0)
            {
              arr[i].cut_num-=a;
              arr[i].left_num+=a;
            }
            else
            {
                arr[i].left_num=a;
            }

        }

        if((arr[i].left_num+arr[i].cut_num)<frist_num)
        {
            arr[i].fall=1;
        }
    }
    for(int i=0;i<n;i++)
    {
        all_left_num+=arr[i].left_num;
        if(arr[i].fall==1)
        {
            E+=1;
        }
    }
    for(int i=0;i<n;i++)
    {
        if(arr[((i-1)%n+n)%n].fall==1&&arr[i%n].fall==1&&arr[(i+1)%n].fall==1)
           {
               D+=1;
           }
    }

    cout <<all_left_num<<" "<<E<<" "<<D<< endl;
    return 0;
}

解题思路:

就是如何找到连着的三棵树,关键在于条件判断时的循环问题,最后一棵树需要与前面两个树一起进行判断,是否都满足落果的条件。【这里使用了取余的方法】

总结:

c++里负数的取余结果是负数,所以这里要使得结果是正数,那么需要注意一下写的方式。
ps:让a对b取余
r = (a%b+b)%b;

标签:arr,cut,小明种,int,num,苹果,fall,left,201909
来源: https://blog.csdn.net/qq_45774885/article/details/120371685