[基础知识] 最大化总和,并给出其起始位置
最编程
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.