CSP-201909-2-小明种苹果(续)(空间优化)

考研复试过程中第一次写,对这个题进行了空间的优化,因为复试紧张,外加还有毕设,没空写解释了,就直接上代码了。
在这里插入图片描述
如有疑问,请加QQ:1070597920(秒回)(备注就写“csdn”四个字母)

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;

	int drop[1000] = { 0 };
	int isdrop[1000] = { 0 };
	int lastcount, sum = 0;
	int s;			//  相当于a[i][0]
	int temp;		//  temp在for循环里的每次输入,相当于一个a[i][j]
	for (int i = 0; i < n; i++)
	{
		cin >> s;
		for (int j = 1; j <= s; j++)
		{
			cin >> temp;
			if (j == 1)
			{
				lastcount = temp;
			}
			else
			{
				if (temp <= 0)		//  进行了疏果
				{
					drop[i] += temp;
				}
				if (temp > 0)		//  进行了统计
				{
					if (lastcount + drop[i] > temp)		//  证明有果子暗中掉落了
					{
						isdrop[i] = 1;					//  证明第i课树有掉落
					}
					lastcount = temp;					//	最后一次果子统计数更新
					drop[i] = 0;						//  疏果数归0
				}
				if (j == s && temp <= 0)				//  到末尾了但没有统计(就是进行了疏果操作),那我就要减去疏果的个数
				{
					lastcount += drop[i];
				}
			}
		}
		sum += lastcount;
	}
	int howmany = 0;
	for (int i = 0; i < n; i++)		//  统计有多少个果树掉落
	{
		if (isdrop[i] == 1)
			howmany++;
	}
	int mark = 0;					//  符合要求的三元个数
	for (int i = 0; i < n; i++)		//  统计三元组
	{
		if (i == 0)
		{
			if (isdrop[n - 1] == 1 && isdrop[0] == 1 && isdrop[1] == 1)
				mark++;
		}
		else if (i == n - 1)
		{
			if (isdrop[n - 2] == 1 && isdrop[i] == 1 && isdrop[0] == 1)
				mark++;
		}
		else
		{
			if (isdrop[i - 1] == 1 && isdrop[i] == 1 && isdrop[i + 1] == 1)
				mark++;
		}
	}
	cout << sum << " " << howmany << " " << mark << 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值