CCF201909-2小明种苹果(续)

 

解题思路:解题思路很简答,就是用数组将数据存起来然后再进行统计,具体思路就见代码注释,记录这道题的是为了警示自己好好审题啊......

审题有问题,写题火葬场啊.......以为每棵树就疏一次果,把D和小明统计疏果有落果的次数混为一谈,怎么提交都只有50分还一直再挑统计E的毛病.....

#include<iostream>

using namespace std;
int a[1005][1005];
int b[1005] = {0};//每棵树是否有落果的统计

int main() {
    int n;//共几棵树
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i][0];//进行了几次操作
        for (int j = 1; j <= a[i][0]; j++) {
            cin >> a[i][j];
        }
    }
    int per_num = 0;//每棵树的苹果数
    int sum_num = 0;//最后的总剩余苹果数
    int dgcount = 0;//有果实掉落的苹果树的棵树
    for (int i = 0; i < n; i++) {
        per_num = a[i][1];//初始苹果的情况
        for (int j = 2; j <= a[i][0]; j++) {
            if (a[i][j] < 0)//疏果的情况
                per_num += a[i][j];
            else if (a[i][j] > 0) { //统计果子的情况
                if (a[i][j] != per_num) {//有落果的情况,掉果的棵树的统计不能在这,因为可能一棵树统计多次
                    b[i] = 1;
                }
                per_num = a[i][j];
            }
        }
        sum_num += per_num;
    }
    for (int i = 0; i < n; i++) {
        if (b[i]) {
            dgcount++;
        }
    }
    //判断连着三棵树都掉果的组数
    int e = 0;
    for (int i = 0; i <= n - 2; i++) {
        if (b[i] && b[i + 1] && b[i + 2]) {
            e++;
        }
    }
    if (b[n - 2] && b[n - 1] && b[0]) e++;
    if (b[n - 1] && b[0] && b[1]) e++;

    cout << sum_num << " " << dgcount << " " << e << endl;
    system("pause");
    return 0;

猜你喜欢

转载自www.cnblogs.com/syq816/p/12292600.html