201909-2 小明种苹果(续)

201909-2 小明种苹果(续)
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;

上一篇:人手必备六个Final Cut Pro X实用技巧


下一篇:使用cut 提取ip