求解
查看原帖
求解
1025321
midsummer_zyl楼主2023/7/11 18:20

一这么一道题:

题目描述
圆盘上有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

救命!

2023/7/11 18:20
加载中...