CCF-CSP备考记录:201909-2 小明种苹果(续)
由于最近在备考2020年三月份的CCF,刚开始刷真题,感觉需要把自己碰到的一些问题记录下来,既能方便自己回头翻阅,也给大家提供一些经验教训。
**本人第一次写博客,如有不足之处还望留言批评指正。**
题目
思路分析
整体思路
用数组存储果树的数据,依次读取。
如果数据大于零,则比较数据和当前苹果数量,数据小于当前苹果数量则意味着出现掉果,掉果数量加一,并在记录数组中做标记;
数据小于零,则用当前苹果数量加上蔬果数量。
计算连三颗果树掉果情况时,在记录数组中,i从0~n,第i、(i+1)%n、(i+2)%n个都有标记时,组数加一。
经验总结
一颗果树可能出现**多次掉果**情况,但在掉果数量上只能**记录一次**!
100分c++代码:
#include <iostream>
using namespace std;
#define M 1002
int n,m,nb[M]= {0},dro[M]= {0};
int all=0,drop=0,e=0;
int tmp=0;
int main(int argc, char** argv) {
cin>>n;
for(int i=0; i<n; i++) {
cin>>m;
for(int j=0; j<m; j++) {
cin>>nb[j];
}
tmp=nb[0];
for(int j=1; j<m; j++) {
if(nb[j]>0) {
if(nb[j]<tmp) {
if(dro[i]==0) {
drop++;//有掉果,记录一次即可,不可多次记录 !!!!!
dro[i]=1;//记录
}
tmp=nb[j];
}
} else tmp+=nb[j];
}
all+=tmp;
}
if(drop>=3)
for(int i=0; i<n; i++) {
if(dro[i]&&dro[(i+1)%n]&&dro[(i+2)%n]) e++;
}
cout<<all<<" "<<drop<<" "<<e;
THE END!