CCF认证201909-2小明种苹果(续)

题目描述

CCF认证201909-2小明种苹果(续)

算法设计+题目分析

分析题目:

1、设置两个数组分别记录每棵苹果树现存的苹果数量和该苹果树是否发生了掉落情况;

int ap_tree[1010]={0};
int D[1010]={0};//为0代表未出现掉落情况,为1代表出现了掉落情况

2、遍历每行,边输入边判断是否出现了掉落情况(出现了就改变D数组);
3、对D数组进行遍历,记录其中为1的个数,并记录有几个连续的3个1(注意边界处理);
4、打印结果。

注意点+记录点

代码(100分)

环境
Visual C++6.0

#include <stdio.h>
int ap_tree[1010]={0};
int D[1010]={0};
int main(){
	//freopen("C:\\input.txt", "r", stdin);
	int n, m, k;
	scanf("%d", &n);
	for (int i=0; i<n; i++){
		scanf("%d", &m);
		for (int j=0; j<m; j++){
			scanf("%d", &k);
			if (k<ap_tree[i] && k>0)  D[i]=1;//出现掉落情况
			if (k>0){
				ap_tree[i]=k;//第一次的苹果个数或者出现掉落后新的苹果个数
				continue;
			}
			ap_tree[i] +=k;//疏果操作
		}
	}
	int total=0;//树上剩下的苹果总数
	int num_tree=0;//有掉落情况的苹果树棵数
	int num_group=0;//组数
	for (int ii=0; ii<n; ii++){
		total+=ap_tree[ii];
		if(D[ii]==1) num_tree++;
		int pred, succ;
		//下面为遇到边界的情况
		if (ii-1==-1) pred=n-1;
		if (ii-1!=-1) pred=ii-1;
		if (ii+1==n) succ=0;
		if (ii+1!=n) succ=ii+1;
		if (D[pred] && D[ii] && D[succ]) num_group++;//连续3个苹果树有掉落情况
	}
	printf("%d %d %d", total, num_tree, num_group);
	return 0;
}

感谢链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值