一这么一道题:
题目描述
圆盘上有n个格子,每个格子存了一个整数,找出4个相邻的数,使其相加之和最大。输出最大的四个数之和,以及它们的起始位置。顺时针转)
输入格式
第1行:若干个数(保证个数小于等于1000,每个数都是非负数)
输出格式
第1行:2个整数,第一个代表起始位置(位置从1开始计数),第二个代表最大的和。
样例
样例输入
3 1 2 4 0
样例输出
1 10
数据范围与提示
提示
不定个数的数据的输入方式,可以用语句: int a; while(cin >> a) { 语句序列 } 输入表达式cin>>a在读到一个数时,返回true。当所有数读完后,继续读数,将返回false。
若用scanf输入,用语句 while( (scanf("%d", &a) == 1) {语句序列}在GUIDE中运行程序时,输入完所有数据后,按回车键,再铵Ctrl + Z,结束输入,就可以了。
我的代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[100005], n = 1, t, b, maxn = -100000;
while(cin >> a[n])
n++;
for(int i = 1; i <= n; i++){
a[n + i] = a[i];
if(maxn < a[i] + a[i + 1] + a[i + 2] + a[i + 3]) {
maxn = a[i] + a[i + 1] + a[i + 2] + a[i + 3];
b = i;
}
}
printf("%d %d", b, maxn);
return 0;
}
92分,哪里错了?
错误的数据点如下:
45 874 15 678 15 4564 666
6 6149
我的代码输出:
4 5923
救命!