欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[基础知识] 最大化总和,并给出其起始位置

最编程 2024-03-25 12:49:29
...

【基础】相加之和最大,并给出它们的起始位置

题意分析:

这是一个环的问题,题意也是比较明了的,找到相邻的4个数,让他们相加的和最大,并给出他们的起始位置。

解题思路:

当我们看到数据量时,发现n最大才大到20,所以我们就可以用暴力搜索来解决。

Ps.当数据量很大时,需要用动态规划,但这里不用。

算法分析:

读入n和a数组,再用嵌套的for循环,

I循环n个数开头

:记得把s清零。

J循环i到i加上3的那4个数

判断:

如果j现在小于等于n,就把a[j]的数加到s里去

如果j大于n,那s要加的就是a[j-n]了

J循环结束后,判断现在的s有没有大于现在的最大值max

如果大于,不但要把s的值存起来,现在的起始位置i也得赋值出来。

最后,要先输出最大值,再输出起始位置。

答案参考:

var

a:array[1..10000]of longint;

n,i,j,s,max,k:longint;

begin

readln(n);

for i:=1 to n do read(a[i]);

for i:=1 to n do

begin

s:=0;

for j:=i to i+3 do

if j<=n then inc(s,a[j])

else inc(s,a[j-n]);

if s>max then  begin k:=i;max:=s;end;

end;

writeln(max);

writeln(k);

end.