小编Iva*_*van的帖子

通过加或减两个整数之间的最短路径

这是这个问题的描述:

你有两个整数a和b.您希望找到将a转换为b所需的最短操作序列,其中每个步骤允许您添加或减去5,7或12.

例如,如果给出a = -5且b = 19,则最短路径为

-5 + 12 + 12 = 19
Run Code Online (Sandbox Code Playgroud)

如果给你1和3,那么最短的路径就是

1 + 7 - 5 = 2
Run Code Online (Sandbox Code Playgroud)

我可以考虑解决这个问题的唯一方法是使用BFS,也许还有一些修剪.我可以使用更好的算法吗?

谢谢!

theory algorithm math equation numbers

17
推荐指数
1
解决办法
960
查看次数

当局部最优解决方案等于全局最优?关于贪婪算法的思考

最近我一直在研究一些贪婪的算法问题.我对局部最优而感到困惑.如您所知,贪婪算法由局部最优选择组成.但是,结合局部最优决策并不一定意味着全局最优,对吧?

以改变为例:使用最少数量的硬币制作15¢,如果我们有10¢,5¢和1¢硬币,那么你可以用一个10¢和一个5¢来实现.但是如果加上12美分硬币,贪婪算法就会失败,因为(1×12¢+ 3×1¢)使用的硬币多于(1×10¢+ 1×5¢).

考虑一些经典的贪婪算法,例如Huffman,Dijkstra.在我看来,这些算法是成功的,因为它们没有退化情况,这意味着局部最优步骤的组合总是等于全局最优.我理解对吗?

如果我的理解是正确的,有没有一种通用的方法来检查贪婪算法是否是最优的?

在网站的其他地方找到了一些关于贪婪算法的讨论.但是,问题并没有详细说明.

algorithm global greedy

8
推荐指数
1
解决办法
4793
查看次数

在这样的游戏中,什么是获胜策略?

有一天,我被问到这样一个问题,两个玩家(A,B)和四个位置,每个玩家在这些位置上放“ N”或“ O”,谁先拼写“ NON”赢得了这场比赛。有策略玩家A或玩家B一定会成功吗?我对此不太熟悉,因此他在以下情况下给出了一些提示,无论A提出什么,B都会成功。

[N(A看跌期权)| _ | _ | N(B看跌期权)]

首先,A将N放置在此数组的第一个索引中,然后B将N放置在最后一个位置。然后,无论A放置在什么位置,A都会赢。

所以问题是,如果将插槽添加到7个插槽,是否有相同的策略?

[_ | _ | _ | _ | _ | _ | _]

我想过类似四个灵魂的情况,但是需要这样的前提条件。我不确定这背后是否有任何理论。

[N | _ | _ | N | _ | _ | 】

algorithm artificial-intelligence

5
推荐指数
1
解决办法
202
查看次数

(Errno 101) 使用 crontab 执行 python 脚本时网络无法访问

我想使用下面的脚本从 webstie 检索一些信息。使用命令行效果很好。但是,使用crontab进行调度时,会遇到“错误101”问题。我无法找出根本原因,您能帮忙提供一些建议吗?谢谢!

    req = urllib2.Request(tempURL)
    req.add_header('User-Agent', ua)
    try:
        response = urllib2.urlopen(req, timeout=10)
        data = response.read()
        print data
        response.close()
        logging.info("Successfully get information about city " + str(k))
    except urllib2.URLError, e:
        logging.info("Failed to crawl url " + tempURL)
Run Code Online (Sandbox Code Playgroud)

我的Python环境:

机器是redhat,安装了python 2.6.6。为了使用python2.7.4。我从网上下载了 python-2.7.4.tar 并自己构建。还将以下环境变量添加到/etc/profile

PYHOME=$The unpacked path
Run Code Online (Sandbox Code Playgroud)

这样做之后,我得到了以下信息

[]$ python --version
 >>> Python 2.7.4
Run Code Online (Sandbox Code Playgroud)

然后按照谷歌搜索,我创建了一个 shell 脚本来设置 python 脚本的 ENV。这个 shell 脚本将用于 crontab 计划

#!/bin/bash
export PYHOME=$Python274_location
python my.py
Run Code Online (Sandbox Code Playgroud)

如果直接在命令行中执行“python my.py”,可以获得正确的结果。但是如果在 crontab 中调度,我总是会收到以下错误。

ERROR:root:Failed to reach server. Reason: [Errno 101] Network is …
Run Code Online (Sandbox Code Playgroud)

python cron networking

5
推荐指数
0
解决办法
1693
查看次数

如何计算出2N阵列中两个子阵列的最近和?考虑找到最佳的一个

这是我的问题.

有一个带有2N元素的未排序数组.所有这些元素都是正整数.问:如何将此数组拆分为两个N数组,并且两个数组的总和必须彼此最接近

一个直观的想法是,

  1. 将此数组排序为a1 <a2 <a3 <... <a2N和
  2. 将它们分成两个子阵列a1 a3 a5 ... a(2N-1)和[a2,a4,... a2N],然后在每个aray中打开两个数字,并保持循环util我们找到两者之间的最小值阵列.

但通过这种方式,我们无法确定我们是否找到了最佳方案.

arrays algorithm numbers

3
推荐指数
1
解决办法
213
查看次数