2064. 【2016.10.4NOIP普及模拟】Note

题目描述

     数学课上,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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值