最小傷害 題解

問題描述

明明站在一個N x N的方陣中最左上角的格子裏。他能夠從一個格子走到它右邊和下邊的格子裏。ide

每個格子都有一個傷害值。他想在受傷害最小的狀況下走到方陣的最右下角。spa

解題思路

一看就知道用DP。後一格的最小傷害,爲它左邊或上邊格子的最小傷害加本身格子的傷害。code

因此 f[i,j]:=min(f[i,j-1],f[i-1,j])+a[i,j]. blog

邊界 f[1,1]:=a[1,1]it

       f[i,1]:=f[i-1,1]+a[i,1]event

       f[1,j]:=f[1,j-1]+a[1,j]class

程序供上cli

uses math;
var n:longint;
    a,f:array[0..1000,0..1000]of longint;
    i,J:longint;
begin
read(n);
for i:=1 to n do
 for j:=1 to n do
  read(a[i,j]);
  f[1,1]:=a[1,1];
 for i:=2 to n do
 begin
 f[i,1]:=f[i-1,1]+a[i,1];
 f[1,i]:=f[1,i-1]+a[1,i];
 end;
for i:=2 to n do
 for j:=2 to n do
     f[i,j]:=min(f[i-1,j],f[i,j-1])+a[i,j];
write(f[n,n]);
end.
View Code
相關文章
相關標籤/搜索