【味子的数学棋盘】(3+3+3+3=12分)
味子就读的小学目前正在教授数学棋盘的使用,所谓数学棋盘,当然是由一格格的方格组成的棋盘,每个方格内有一个1位非负整数(0—9)。味子要做的事情就是在棋盘的某行或者某列上(不能是斜的选取)选取固定数量的数字,然后把这些数字加起来,要求这些数字之和是所方方案中最大的。
味子是个聪明的孩子,她正在学习编程,于是她把问题简化,简化后的问题如下:
(1)只有一行方格,每个方格内只有一个非负整数(所有数字都在0—9之间)。
(2)现在有一个固定长度的尺子,尺子长度为k.。
(3)味子想用这个尺子去套取这行中的k个数字,使得这些数字之和是所有k个数字之和中最大的。
以下是味子套取4个数字(尺子长度为4)的三种方案,显然方案2、3是最佳方案。
味子想试着编写一个程序来解决这个问题,请你帮助味子完成下面的程序。程序首先会读入n和k,其中n表示总共的格子数,k表示尺子的长度,程序最后会输出求得的最大的k个数字之和。
输入样例:
10 4
1 2 3 4 9 8 0 7 6 5
输出样例:
24
Program test5;
Var a:array[1..100]of integer;
Max,n,i,j,s,k:integer;
Begin
Readln(n,k);
For i:=1 to n do read( a[i] );
S:=0;max:=0;
For i:=1 to n-k+1 do
Begin
S:=0;
For j:=i to k do s:=s+ a[i] ;
If s>max then max:= s ;
End;
Write(max);
End.