我是Go编程语言的新手,最近遇到了以下代码:
func (rec *ContactRecord) Less(other interface{}) bool {
return rec.sortKey.Less(other.(*ContactRecord).sortKey);
}
Run Code Online (Sandbox Code Playgroud)
但是,我不明白函数签名背后的含义.它接受一个接口作为参数.你能解释一下这是怎么回事吗?谢谢
我正在尝试解决与Python中的图形相关的问题.由于它是一个敏感的编程问题,我没有使用任何其他第三方软件包.
该问题呈现出5 X 5
方形网格形式的图形.假设机器人位于网格上的用户提供位置.网格的索引位于(0,0)
左上角和(4,4)
右下角.网格中的每个单元格由以下3个字符中的任何一个表示.' b
'(ascii值98)表示机器人的当前位置,' d
'(ascii值100)表示脏单元格,' - '(ascii值45)表示网格中的清洁单元格.例如,下面是机器人所在的示例网格0 0
:
b---d
-d--d
--dd-
--d--
----d
Run Code Online (Sandbox Code Playgroud)
目标是以最少的步骤清理网格中的所有单元格.步骤被定义为任务,其中i)机器人改变它的位置ii)机器人改变单元格的状态(从d到 - )
假设最初标记为b
不需要清洁的位置.允许机器人向上,向下,向左和向右移动.
我的方法
我已经阅读了几个关于图形的教程,并决定将图形建模为25 X 25的邻接矩阵,0代表无路径,1代表矩阵中的路径(因为我们只能在4个方向上移动).接下来,我决定将Floyd Warshell的所有对最短路径算法应用于它,然后总结路径的值.但我觉得它不起作用.我正处于一个delimma中,问题是以下任何一个问题:
i)最小生成树(我无法做到,因为我无法将网格建模并存储为图形).
ii)A*搜索(同样是一个疯狂的猜测,但这里的问题相同,我无法正确地将网格建模为图形).
如果你能对这些问题提出一个好的方法,我会感激不尽.此外,关于各种形式的基于图形的问题(或链接到那些)的一些提示和伪代码将是有帮助的.谢谢