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 展开
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述
围坐成一圈的12个小朋友,每个人身上都有若干个苹果,老师要选出哪5个挨着坐的小朋友手中的苹果总数最多,你能帮助老师们编写一个程序来确定吗?
输入
一行输入12个整数,表示12个小朋友分别的苹果数
输出
输出从第几个小朋友开始苹果总数最多
输入示例
12 32 24 53 52 30 37 82 87 67 98 78
输出示例
8 展开
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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 ;
}
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.....就依次类推了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询