



二刷思路:输入的同时就算这棵树疏果后剩余果子数:遇到正数则直接调整为该正数,遇到负数则加上;求是否落果,遇到下一个正数时,若当前e[i]的值大于此正数值,说明落果了,否则没有。
注意审题,落果不是疏果,且最后一次统计后假设不再落果。
#include <iostream>
using namespace std;
int main()
{
int n,m,sum=0,a;
cin >> n;
int d[n];
for(int i=0;i<n;i++) d[i]=0;
for(int i=0;i<n;i++)
{
int c=0;
cin >> m;
for(int j=0;j<m;j++)
{
cin >> a;
if(a>0)
{
if(a<c) d[i]=1;
c=a;
}
else
{
c+=a;
}
}
sum+=c;
}
int drop=0,e=0;
for(int i=0;i<n;i++)
{
if(d[i]==1) drop++;
if(d[i]==1&&d[(i+1)%n]==1&&d[(i+2)%n]==1) e++;
}
cout << sum << " " << drop << " " << e << endl;
return 0;
}
测试数据:
4
4 74 -7 -12 -5
5 73 -8 -6 59 -4
5 76 -5 -10 60 -2
5 80 -6 -15 59 0
5
4 10 0 9 0
4 10 -2 7 0
2 10 0
4 10 -3 5 0
4 10 -1 8 0
本文介绍了一种针对果树疏果的算法实现,通过输入每棵树的初始果子数量及疏果后的变化情况来计算最终剩余果子总数、落果次数及连续三次疏果的情况。采用C++编程语言实现,通过迭代遍历每棵树的状态更新剩余果子数量,并统计落果与连续疏果的次数。
178

被折叠的 条评论
为什么被折叠?



