解题思路:解题思路很简答,就是用数组将数据存起来然后再进行统计,具体思路就见代码注释,记录这道题的是为了警示自己好好审题啊......
审题有问题,写题火葬场啊.......以为每棵树就疏一次果,把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;