csp201909-2小明种苹果续

 

 

/*
定义输入N 二维数组
输出T总数 D掉落棵树 E掉落组数
定义last记录上次掉落的编号,flag=1表示两次连续掉落,不掉落归零
spec=1表示1 2都掉落了,spec=2表示只有1掉落
对每个i用for迭代,最后一个正数为T分量
将每行第二个数,与所有负数求和与最后一位正数比较,得出D分量
定义cut为疏果操作,drop为掉果
*/
#include <stdio.h>
static int arr[1000][1001];  //设置为静态防止溢出

int main()
{
    int N,T=0,D=0,E=0;
    int last=-2,flag=0,spec=0;
    int i,j;
    scanf("%d",&N);
    for(i=0;i < N;i++)
    {
        int drop=0,cut=0,t=0;
        scanf("%d",&arr[i][0]);
        for(j=1;j <= arr[i][0];j++)
        {
            scanf("%d",&arr[i][j]);
        }

        for(j=2;j <= arr[i][0];j++)
        {
            if(arr[i][j]<0)
                cut+=arr[i][j];
            if(arr[i][j]>0)
            {
                t = arr[i][j];
                drop = arr[i][1]+cut-t;
            }
        }
        T+=arr[i][1] - drop + cut;
        if(drop > 0)
        {
            D++;

            if(last==0 && i==1)
                spec = 1;
            else if(i==0)
                spec = 2;

            if(i == N-1 && last == N-2 && spec != 0)
                E++;
            if(flag == 1)
                E++;
            if(i == N-1 && spec == 1)
                E++;

            if(i-last==1)
                flag = 1;
            last = i;
        }
        else
            flag = 0;

    }
    printf("%d %d %d",T,D,E);

    return 0;
}

 通过测试

 

 

posted @ 2020-08-31 13:33  梵蒂冈宝石  阅读(214)  评论(0编辑  收藏  举报