题目描述
Hansel 和 Gretel 得到了一块分成 88 片的披萨,每片上面有不同数量的蘑菇,表示为 𝑆1,𝑆2,...,𝑆8S1,S2,...,S8。Gretel 很喜欢蘑菇,她想要找到连续的四片披萨使得上面的蘑菇最多。
请注意,因为披萨是一个圆,因此编号为 11 的披萨片与编号为 88 的披萨片是相邻的。
输入格式
一共 88 行,每行一个正整数 𝑆𝑖Si(𝑖i 为行数),表示披萨片上的蘑菇数。
输出格式
一行一个正整数,表示连续的四片披萨上最多有几个蘑菇。
输入输出样例
输入 #1
5 2 1 4 5 1 2 3
输出 #1
12
输入 #2
2 6 5 3 3 7 2 6
输出 #2
19
分析:这个题目是max函数的应用,要注意的是一定要把整个数组复制并合起来才能进行计算。。
AC代码c++:
#include<bits/stdc++.h>
using namespace std;
int a[20],mx=-1;
int main(){
for(int i=0;i<8;i++){
cin>>a[i];//读入
}
for(int i=8;i<16;i++){
a[i]=a[i-8];//把数组复制粘贴连接起来
}
// for(int i=0;i<16;i++){//我们一定要做喜欢验证的好宝宝
// cout<<a[i]<<" ";
// }
for(int i=0;i<=11;i++){
mx=max(a[i]+a[i+1]+a[i+2]+a[i+3],mx);//取较大值
}
cout<<mx;//输出
return 0;
}
AC代码python:
a=[]
for i in range(8):
a.append(int(input()))#读入
a+=a #数组复制连接
mx=-1
for i in range(8):
mx=max(sum(a[i:i+4]),mx)#取(和)和(原最大值)中的较大值
print(mx)#输出;
一只新手的答案;
多多指教,不喜勿喷;