2064. 【2016.10.4NOIP普及模拟】Note

来源:互联网 发布:网上竞拍系统 源码 编辑:程序博客网 时间:2024/05/16 08:09

题目描述

     数学课上,D突然想到一件很重要的事情要告诉Z,但是她们分别坐在教室的左前方和右后方,这可怎么办呢?    D决定传纸条!     但是问题又出现了,D要告知Z的是个机密,D不希望有很多人知道。可是由于纸条必须经过其它同学,所以D只好希望知道这个机密的人越少越好。   每个同学都有一个好奇程度k(0≤k≤20),好奇程度越大,偷看纸条的可能性也就越大,D希望传递纸条的路径经过的同学的好奇程度和越小越好。   我们假定每个同学只会将纸条传递给ta后方或者右方的同学。

输入

第1行,两个整数n,m,表示教室有n行m列。(1≤n,m≤100)
第2行到第n+1行,每行m个整数,表示每个同学的好奇程度。
其中D在第1行第1列,Z在第n行第m列,她们的好奇程度都为0。

输出

共1行,1个整数,表示传递路径的好奇程度.。

样例输入

5 4
0 10 8 3
4 19 16 4
12 9 13 12
13 14 19 15
13 4 18 0

样例输出

52

数据范围限制

题解:
f[i,j]:=f[i,j]+min(f[i-1,j],f[i,j-1])
自行理解······
代码:

var  i,j,n,m:longint;  a:array[0..150,0..150] of longint;function min(x,y:longint):longint;begin  if x<y then exit(x);  exit(y);end;begin  assign(input,'note.in');reset(input);  assign(output,'note.out');rewrite(output);  readln(n,m);for i:=1 to n do for j:=1 to m do read(a[i,j]);  for i:=1 to m do    a[0,i]:=maxlongint div 3;  for i:=1 to n do    a[i,0]:=maxlongint div 3;  for i:=1 to n do    for j:=1 to m do      if (i<>1)or(j<>1) then a[i,j]:=a[i,j]+min(a[i-1,j],a[i,j-1]);  writeln(a[n,m]);  close(input);close(output);end.
1 0