NOIP提高组复赛等级 希望获得有关解答 程序语种:PASCAL老鼠在田间觅食.整块稻田由N*N个小的稻田方格组成,每个稻田方格标有这一小块田中的粮食数量.老鼠初始时处于(1,1)的稻田方格中,在移

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 01:53:16

NOIP提高组复赛等级 希望获得有关解答 程序语种:PASCAL老鼠在田间觅食.整块稻田由N*N个小的稻田方格组成,每个稻田方格标有这一小块田中的粮食数量.老鼠初始时处于(1,1)的稻田方格中,在移
NOIP提高组复赛等级 希望获得有关解答 程序语种:PASCAL
老鼠在田间觅食.整块稻田由N*N个小的稻田方格组成,每个稻田方格标有这一小块田中的粮食数量.老鼠初始时处于(1,1)的稻田方格中,在移动前该格内的粮食会被全部吃完,然后老鼠才会开始移动.
每次,老鼠可以且只可以做上下或左右方向上的直线移动.一次移动的距离须满足小于等于题目给定的k值.移动至目的方格之后,它将一定吃掉那一格中的所有粮食,然后再次进行移动.
老鼠的食欲随其所吃到的食物总量的增加而增加.所以要求:它将移动到的稻田方格的粮食数量须大于目前所在稻田方格原有粮食数量.请编写程序求出老鼠所能吃到的最大食物总数.
输入:miceeat.in
第一行是n和k.1

NOIP提高组复赛等级 希望获得有关解答 程序语种:PASCAL老鼠在田间觅食.整块稻田由N*N个小的稻田方格组成,每个稻田方格标有这一小块田中的粮食数量.老鼠初始时处于(1,1)的稻田方格中,在移
不难的,直接搜索就可以了.
dfs(当前坐标x,y,当前总量)
begin
if 当前坐标=n then exit;
if 当前点所到的点都比当前的点的值小 then exit;
if 当前总量>answer then answer:=当前总量
for i:=1 to 4 do begin
x1,y1为所到的某方向的点;
if (x1,y1)还没有处理 and ((x1,y1)的值>(x,y)的值) then begin
标记(x1,y1):=已处理;
dfs(x1,y1,当前总量+(x1,x2)的数量);
标记(x1,y1):=未处理;
end;
end
end
够详细的吧,lz看看,或许我这里面有些问题,仅供参考.
另外有道叫滑雪的题跟这道很像,供lz参考