首页 > SSL 1460——最小代价问题

SSL 1460——最小代价问题

Description

设有一个n×m(小于100)的方格(如图所示),在方格中去掉某些点,方格中的数字代表距离(为小于100的数,如果为0表示去掉的点),试找出一条从A(左上角)到B(右下角)的路径,经过的距离和为最小(此时称为最小代价),从A出发的方向只能向右,或者向下。

这里写图片描述

Sample Input

4 4

4 10 7 0

3 2 2 9

0 7 0 4

11 6 12 1

Sample Output

(1,1)->(2,1)->(2,2)->(2,3)->(2,4)->(3,4)->(4,4)

24


首先现将最上面那行和最左边那行定初值。

用f[i,j]来判断这个点是否为0如果为0,则为TRUE。

那么我们就可以用两重循环,来枚举行和列。如果这个点可以走,那就判断是从上面走下来比较下,还是从左边走过来比较小。还要判断左边或上面是否为0。

f[i,j]:=max(f[i-1,j]+a[i,j],f[i,j-1]+a[i,j]);

如果从上面来,则d[i,j]=2;从左来则为1。

最后倒推回去,找到路线和最终的最小代价值。


代码如下:

var  i,j,n,m:longint;a,k,d:array[-1..101,-1..101]of longint;f:array[-1..101,-1..101]of boolean;procedure dg(x,y:longint);
beginif (x=1)and(y=1) then begin write('(',x,',',y,')'); exit; end;if d[x,y]=1 then dg(x,y-1) else dg(x-1,y);write('->(',x,',',y,')');
end;beginreadln(n,m);fillchar(f,sizeof(f),false);for i:=1 to n dobeginfor j:=1 to m dobeginread(a[i,j]);if a[i,j]=0 then begin a[i,j]:=maxlongint; f[i,j]:=true; end;k[i,j]:=maxlongint div 2;end;readln;end;for i:=1 to m doif f[1,i]=false thenbegink[1,i]:=k[1,i-1]+a[1,i];d[1,i]:=1;end;for i:=2 to n doif f[i,1]=false thenbegink[i,1]:=k[i-1,1]+a[i,1];d[i,1]:=2;endelse break;for i:=2 to n dofor j:=2 to m doif f[i,j]=false thenif ((k[i-1,j]+a[i,j])<(k[i,j-1]+a[i,j]))and(f[i-1,j]=false) thenbegind[i,j]:=2;k[i,j]:=k[i-1,j]+a[i,j];endelseif f[i,j-1]=false thenbegind[i,j]:=1;k[i,j]:=k[i,j-1]+a[i,j];end;dg(n,m);writeln;writeln(k[n,m]-a[n,m]);
end.

转载于:https://www.cnblogs.com/Comfortable/p/8412392.html

更多相关:

  • CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); NSLog(@"%f", end - start); 转载于:ht...

  • Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"]. 代码要求对数组中的元素进行分段。 首先给...

  • Hello,此BAT脚本能够帮助开发者将某目录下全部SQL脚本按文件名称依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重。在指执行时多一种选择。 bat文件 @echo off @REM ******** ******** General Batch for Starting SQL...

  • 有些Windows聚焦图片确实很漂亮,很希望保留下来,但是Windows聚焦图片总更好,网上有得到聚焦图片的方法,每次都手动去弄真麻烦,于是自己编了一个小程序,自动得到Windows聚焦图片,下面是运行这个小程序得到Windows聚焦图片的效果! 小工具以及源码下载:http://download.csdn.net/detail/su...

  •       获取事件列表 getEventListeners(window)//获取window绑定的所有监听事件列表//----------------------------------------getEventListeners(document.querySelector("选择器"))//获取指定DOM的所有监听事件...

  •   来源:https://www.cnblogs.com/hnsongbiao/p/9815808.html   偶然发现 C# 的 HttpRequest 要比 Chrome 请求同一Url 慢好多。C# HttpRequest 要500毫秒 而Chrome 只需要 39ms。   后来 整理 各种方法做了优化    HttpW...

  •   在后台获取upload file 数量的时候发现count一直为0,经检查发现了问题 ,代码如下:   前台: var data = $("#DetailForm").serialize(); $.ajax({ url: '@Url.Action("SaveRequest", "RegistrationRequest")', ty...

  •  * 启用ViewState的情况下,设置某一服务器控件的Value后,然后再将期Visible设置成false * 在回传时(PostBack)其Value不会丢失,ViewState会保留状态 * 如 if(!IsPostBack){ *    txtName.Text="xxxx"; *    txtName.Visible=f...

  • We have ZZIPlib installed.My command configure line looks like :./configure ?with-apxs ?with-curl ?with-curl-dir=/usr/local/lib ?with-gd ?with-gd-dir=/usr/local ?with-g...

  • asar Whether to package the application’s source code into an archive, using Electron’s archive format. Defaults to true. Node modules, that must be unpacked, will be d...

  • 1.      今天遇到一问题,在sles11/vxworks下编译通过,但是在hpux下失败 2.      编译错误: /usr/ccs/bin/ld:DP relative code in file /projects/xxx/DERIVED/tfa_pa32-hpux.a(tfa02_pa32-hpux.o) -share...

  •         最近买个了小本lenovo x100e,结果发现这小本没有大小写指示灯,在windows用也无妨,不过我常常用这本在ubuntu中调试linux代码,vi 常用的编辑器,熟悉的都知道,大小写很关键的,用google搜了一下,发现可以用如下方法解决:        1.  “sudo apt-get install l...

  •   修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262     内容:   Plymouth splash screen is the initial splash screen at boot-up.Ubuntu 10.04 uses Plym...