c++代码,求解释

苹果达人难度级别:A;运行时间限制:1000ms;运行空间限制:51200KB;代码长度限制:2000000B试题描述围坐成一圈的12个小朋友,每个人身上都有若干个苹果,... 苹果达人
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述
围坐成一圈的12个小朋友,每个人身上都有若干个苹果,老师要选出哪5个挨着坐的小朋友手中的苹果总数最多,你能帮助老师们编写一个程序来确定吗?
输入
一行输入12个整数,表示12个小朋友分别的苹果数
输出
输出从第几个小朋友开始苹果总数最多
输入示例
12 32 24 53 52 30 37 82 87 67 98 78
输出示例
8
展开
 我来答
阿四哥vlog
2021-04-05 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:27.2万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫红的丑梨
2013-03-24
知道答主
回答量:29
采纳率:0%
帮助的人:13.5万
展开全部
#include <iostream>
using namespace std;
int main ( void )
{
int a[12];
int i, j, Max = 0, sum = 0;
for ( i = 0; i < 12; i ++ )
cin >> a[i] ;
for ( i = 0; i < 12; i++ )
{
sum += a[i] ;
if ( i >= 4 )
{
if ( sum > Max )
{
Max = sum ;
j = i - 4 ;
}
sum -= a[i - 4] ;
}
}
cout << j + 1 << endl ;
return 0 ;
}
更多追问追答
追问
能解释一下原理吗?sum -= a[i - 4] ;什么意思。还有怎么比较的
追答
原理就是计算每5个相邻的小朋友的苹果总数,然后取出最大的。
sum -------------代表5个相邻小朋友的苹果总数
Max -------------代表要求的那5个小朋友的苹果数

当 i = 4 时,sum正好累计够第 1、2、3、4、5 这前5个小朋友的苹果数,此时开始与代表最大值的 Max 比较,如果比 Max 大,就把 sum 的值赋给 Max ,并且用 j 记录下此时小朋友的位置。
sum -= a[i -4] ; 的意思表示去掉当前这5个小朋友中第 1 个小朋友的苹果,这是为了方便下次循环执行 sum += a[i] ; 时能直接得到第2、3、4、5、6这5个小朋友的苹果总数。
然后 i = 5、6、7.....就依次类推了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式