- CCF201909-2—小明种苹果(续)
- 题目要求:




- 这道题不是很难,用循环输入即可获得对应的值,我创建了几个数组分别用于记录果实数量T[n]、掉果的棵目D[n]以及哪几棵树掉了果实E[n]
- 我在实现了统计功能后,一直都只有80分,并且提示运行错误,而不是错误,表示可能出现了边界bug,因为在题目要求中指出n<=1000,而我最初定义a[n][1000]时,没有给出n的范围。
- 后来我将a[1000][1000]定义到了main函数外,给出了n的范围,然后再次运行就没问题啦。
- 还有个要注意的问题就是,一棵树掉一次果也是记一棵树,掉n次果也是记一颗树,所以在记录掉果棵树的时候一定要注意!
#include<bits/stdc++.h>
using namespace std;
int a[1000][1000]={0};
int main(){
int n;
cin>>n;
int T[n]={0},t=0;
int D[n]={0},d=0;
bool E[n]={false};
int e=0;
for(int i=0;i<n;i++){
cin>>a[i][0];
int p=a[i][0];
for(int j=1;j<p+1;j++){
cin>>a[i][j];
if(j==1){
T[i]=a[i][1];
}
if(a[i][j]<=0){
T[i]+=a[i][j];
}
else{
if(T[i]>a[i][j]){
D[i]=1;
E[i]=true;
}
T[i]=a[i][j];
}
}
}
for(int i=0;i<n;i++){
if(E[i]&&E[i+1]&&E[i-1]) e++;
else if(i==0&&E[i]&&E[i+1]&&E[n-1]) e++;
else if(i==n-1&&E[i]&&E[i-1]&&E[0]) e++;
}
for(int i=0;i<n;i++){
t+=T[i];
d+=D[i];
}
cout<<t<<" "<<d<<" "<<e<<" "<<endl;
return 0;
}