取数字问题

来源:互联网 发布:中国知网数据库 编辑:程序博客网 时间:2024/05/18 01:13

取数字问题

时间限制: 1 Sec 内存限制: 128 MB

题目描述

给定M*N的矩阵,其中的每个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N),每一步只能向右或向下,并且不能走出矩阵的范围。你所经过的方格里面的数字都必须被选取,请找出一条最合适的道路,使得在路上被选取的数字之和是尽可能小的正整数。

输入

第一行两个整数M,N,(2<=M,N<=10),分别表示矩阵的行和列的数目。
接下来的M行,每行包括N个整数,就是矩阵中的每一行的N个元素。

输出

仅一行一个整数,表示所选道路上数字之和所能达到的最小的正整数。如果不能达到任何正整数就输出-1。

样例输入

2 2
0 2
1 0

样例输出

1

题解

  • dp[i,j,k]:花费k是否能到达点[i,j],是则dp[i,j,k]=1否则dp[i,j,k]=0
  • 正整数是从1开始找,从0开始WA了好几次QAQ
var x:array[0..20,0..20]of longint; dp:array[0..10,0..10,-1000..1000]of longint; n,m,i,j,k,v:longint;function min(a,b:longint):longint;begin if a>b then exit(b) else exit(a);end;begin readln(m,n); for i:=1 to m do  begin   for j:=1 to n do    read(x[i,j]);   readln;  end; dp[1,1,x[1,1]]:=1; for j:=2 to n do  for k:=-1000 to 1000 do   if dp[1,j-1,k]=1   then dp[1,j,k+x[1,j]]:=1; for i:=2 to m do  for k:=-1000 to 1000 do   if dp[i-1,1,k]=1   then dp[i,1,k+x[i,1]]:=1; for i:=2 to m do  for j:=2 to n do   for k:=-1000 to 1000 do    begin     if dp[i-1,j,k]=1     then dp[i,j,k+x[i,j]]:=1;     if dp[i,j-1,k]=1     then dp[i,j,k+x[i,j]]:=1;    end; v:=0; for k:=1 to 1000 do  if dp[m,n,k]=1  then begin writeln(k); v:=1; break; end; if v=0 then writeln(-1);end.
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 乐视手机充电慢怎么办 苹果5s触摸屏失灵怎么办 苹果6出现闪屏怎么办 苹果4s没有卡槽怎么办 苹果se触屏失灵怎么办 苹果6s屏幕乱跳怎么办 6s屏幕触摸失灵怎么办 苹果6sp屏幕失灵怎么办 苹果6s屏幕不动怎么办 苹果6s卡住了怎么办 苹果6s经常卡屏怎么办 苹果6s点不动了怎么办 手机屏自己乱点怎么办 苹果手机摔开了怎么办 苹果屏幕摔开了怎么办 苹果手机6开不了机怎么办 苹果6开不开机怎么办 苹果6s开不开机怎么办 苹果6手机开不了机怎么办 苹果6s不能开机怎么办 苹果6p无法开机怎么办 苹果6s开不了机怎么办 苹果7屏幕划不动怎么办 苹果6老是卡机怎么办 苹果手机黑屏开不了机怎么办 苹果6plus掉水里了怎么办 苹果6黑屏开不了机怎么办 苹果手机6死机了怎么办 苹果7手机死机怎么办啊 苹果7突然死机了怎么办 苹果手机5s死机怎么办 苹果六s死机了怎么办 苹果4卡机了怎么办 苹果4锁死了怎么办啊 苹果4手机停机了怎么办 苹果4开不了机怎么办 苹果4开不了机怎么办啊 苹果7手机死机了怎么办 苹果6s老是死机怎么办 苹果8手机死机了怎么办 苹果7手机卡屏了怎么办