我正在尝试解决哈密顿路径问题的略微修改版本.修改它的起点和终点是给我们的,而不是确定是否存在解,我们想找到解的数量(可能是0).
该图作为2D数组提供给我们,其中节点是数组的元素.此外,我们只能水平或垂直移动,而不是对角移动.毋庸置疑,我们不能从一个城市到两个城市,因为要做到这一点,我们需要两次访问一个城市.
我写了一个强力解决方案,尝试在每个节点上所有4个(边缘上的节点为3或2个)可能的移动,然后计算解决方案的数量(当它达到目标并且已经看到所有其他节点时),但是它在适度大小的输入上运行了大量的时间(例如7x7阵列).
我也想过使用双向搜索,因为我们知道了目标,但这并没有真正帮助,因为我们不仅希望条纹满足,我们还希望确保所有节点都已被访问过.此外,可能是当所有节点在两个条纹之间耗尽时,它们以不能连接的方式结束.
我觉得有些东西我不知道只留给我一个蛮力的解决方案.我知道这个问题本身就是NP完全的,但我想知道是否有任何有关蛮力的改进.有人可以提出别的建议吗?
- 编辑 -
我提到使用双向搜索并没有真正帮助,我想澄清为什么我这么认为.考虑一个2x3图,左上角和右下角节点分别是起点和目标.让双向搜索的条纹从开始向左移动,从目标开始向左移动.在2次移动之后,所有节点都将被访问但是没有办法加入条纹,因为我们只能从一个节点向一个方向移动.但是,正如David在下面的回答中指出的那样,也许可以使算法有一些修改.
我知道在使用hashCode和equals时还有其他关于一般最佳实践的问题,但我有一个非常具体的问题.
我有一个类作为实例变量,同一个类的数组.更明确一点,这是代码:
Class Node{
Node arr[] = new Node[5];
}
Run Code Online (Sandbox Code Playgroud)
我需要覆盖类Node的hashCode,并且数组是确定两个节点是否相同的重要决定因素.如何有效地将数组合并到hashCode的计算中?
- 编辑 -
我正在尝试检查两个节点是否相同,这意味着它们具有相同数量的子节点,并且这些节点导致完全相同的状态.因此,我正在有效地尝试比较两个节点的子树.我想知道我是否可以使用散列来进行此等式检查.
我认为我实际上需要对整个子树进行哈希处理,但鉴于我的类定义的递归性质,我不确定如何去做.
我需要用户授予我的应用访问他的Dropbox的权限,但是我非常希望他们不必离开我的网站然后再回来。我知道的身份验证API要求用户登录其Dropbox帐户,并在Dropbox网站上对应用进行身份验证。
有办法解决吗?
- 编辑 -
因此,我知道我们可以使用Google / Facebook的身份验证API,以便提示用户在同一窗口内允许/拒绝该应用程序(执行此操作)。如果我们可以使用Dropbox API进行此类操作,那就太好了。
谢谢!
我想将emacs中的命令映射到键绑定.我希望该命令Control-l
与Alt-x goto-line
返回的命令具有相同的效果(因为该命令首先需要返回被调用,然后是行号).
我修改了init文件,如下所示:
(define-key (M-x goto-line) '\C-l)
但那没用.错误是define-key
给出了超过1个参数.
有谁知道如何重置emacs中的键绑定?
谢谢!
我第一次使用MongoDB,而且我不完全确定在我所处的情况下最佳实践是什么.这就是我想要做的:
我正在创建一个iPhone应用程序,人们可以创建一个事件,然后聊聊它(为了解决一些细节,让我们说).我有一个活动的集合.我不知道如何存储用户的聊天记录.我希望聊天与其相应的事件相关联,但我不确定如何做到这一点,因为MongoDB不是关系型的.
我应该为聊天和链接(我的意思是MongoDB链接)创建另一个集合/文档吗?
和大多数其他人一样,我经常处理文件I/O,我想确保我没有浪费时间阅读文件.我目前知道FileReader()是用Java读取文件的最有效方法,但我希望有一些更加模糊的东西.
另外,你可以跳过在Java/C中读取文件中的一行吗?
我最近有一个家庭作业问题,我们应该在棋盘上工作,并在棋盘上放置一些女王.
这个问题在困难方面是微不足道的,但我想问的是:
我应该只创建一个布尔二维数组并将包含一个皇后的每个位置更改为1,还是应该创建一个私有类来表示一个皇后,它有x和y坐标作为实例变量?
这可能看起来不是很重要或者很紧迫,但我正在使用Java,它有点接近OO编程概念的核心.如果我们从不使用Java的模块化功能,那么为什么要使用Java呢?我们不妨在C或Python中编写相同的东西.
你认为哪种更合适?如果你可以将你的答案限制在理性支持的答案而不是意见或个人偏好,我将不胜感激.
java ×3
algorithm ×1
c ×1
coding-style ×1
dropbox ×1
dropbox-api ×1
emacs ×1
file-io ×1
hashcode ×1
mongodb ×1
np-complete ×1
overwrite ×1
path ×1
performance ×1