小明种苹果(续)C++

#include<iostream>
using namespace std;
int main(){
	int n;
	int total = 0;  //最后剩下的总的苹果数 
	int succession = 0; // 连续三棵苹果树均掉落苹果的组数
	int drop_tree = 0;   // 统计掉落苹果的苹果树个数 
	cin >> n;
	int drop_flag[n];	// 第i棵树是否掉落苹果 
	int apple[n];     // 第i棵苹果树还剩多少苹果 
	int** arr = new int*[n];
	int temp;
	for(int i = 0; i < n; i++){
		drop_flag[i] = 0;
		cin >> temp;
		arr[i] = new int[temp+1];
		arr[i][0] = temp;
		for(int j = 1; j < temp + 1; j++){
			cin >> arr[i][j];
		}
	}
	// 遍历二维数组,修改状态位 
	for(int i = 0; i < n; i++){
		apple[i] = arr[i][1]; 
		for(int j = 2; j < arr[i][0] + 1; j++){
			int now = arr[i][j];
			if(now > 0&&apple[i] > now){
				apple[i] = now;
				drop_flag[i] = 1;
			}else if(now < 0){
				apple[i] += now;
			}
		}
	}
	int pre = 0, next = 0;
	for(int i = 0; i < n; i++){
		pre = (i - 1 + n) % n;
		next = (i + 1 + n) % n;
		if(drop_flag[i] == 1) drop_tree += 1;
		if(drop_flag[pre] == 1 && drop_flag[i] == 1 && drop_flag[next] == 1) succession += 1;
		total += apple[i];
	} 
	cout<< total << " "<< drop_tree << " " << succession;
	return 0;
} 
发布了18 篇原创文章 · 获赞 1 · 访问量 998

猜你喜欢

转载自blog.csdn.net/qq_38969094/article/details/103965526