小编use*_*074的帖子

用动态编程修补棋盘格

我正在尝试自学动态编程,并从麻省理工学院遇到这个问题.

我们给出了一个棋盘,它有4行和n列,每个正方形都有一个整数.我们还给了一组2n个鹅卵石,我们想要将一些或所有这些放在棋盘上(每个鹅卵石可以放在一个正方形上),以便最大化被覆盖的方块中的整数之和.鹅卵石.有一个约束:对于合法的鹅卵石放置,其中没有两个可以在水平或垂直相邻的方块上(对角线邻接是可以的).

(a)确定任何列中可能出现的合法模式的数量(孤立地,忽略相邻列中的鹅卵石)并描述这些模式.如果可以将两个模式放在相邻列上以形成合法放置,则调用两个模式兼容.让我们考虑由第一个k列1 k n组成的子问题.可以为每个子问题分配一个类型,即最后一列中出现的模式.

(b)使用兼容性和类型的概念,给出用于计算最佳放置的O(n)时动态编程算法.

好的,所以对于第一部分:有8种可能的解决方案.

对于b部分,我不确定,但这就是我要去的地方:SPlit into sub-problems.假设我在n.1.通过列0,...,i来定义Cj [i]为最佳值,使得列i具有模式类型j.2.为每种模式类型创建8个单独的n个元素数组.

我不知道从哪里开始.我意识到网上有这个问题的解决方案,但解决方案对我来说似乎不太清楚.

python algorithm dynamic-programming

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

如果它们具有重叠区域,则连接字符串

我正在尝试编写一个脚本,它将在每个字符串的开头或结尾找到共享5个字母重叠区域的字符串(如下例所示).

facgakfjeakfjekfzpgghi
                 pgghiaewkfjaekfjkjakjfkj
                                    kjfkjaejfaefkajewf
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个连接所有三个的新字符串,因此输出将是:

facgakfjeakfjekfzpgghiaewkfjaekfjkjakjfkjaejfaefkajewf
Run Code Online (Sandbox Code Playgroud)

编辑:

这是输入:

x = ('facgakfjeakfjekfzpgghi', 'kjfkjaejfaefkajewf', 'pgghiaewkfjaekfjkjakjfkj')
Run Code Online (Sandbox Code Playgroud)

**没有订购清单

我到目前为止所写的内容*但不正确:

def findOverlap(seq)
    i = 0
    while i < len(seq): 
        for x[i]:
        #check if x[0:5] == [:5] elsewhere

 x = ('facgakfjeakfjekfzpgghi', 'kjfkjaejfaefkajewf', 'pgghiaewkfjaekfjkjakjfkj')
findOverlap(x)
Run Code Online (Sandbox Code Playgroud)

python while-loop python-2.7

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

在Python中选择长度为n的随机列表元素

我知道你可以使用random.choice从列表中选择一个随机元素,但我试图选择长度为3的随机元素.例如,

list1=[a,b,c,d,e,f,g,h]
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像:

[c,d,e]
Run Code Online (Sandbox Code Playgroud)

基本上我想从列表中生成随机子列表.

python random

3
推荐指数
2
解决办法
4198
查看次数

更改python键的类型

有没有一种简单的方法可以在 python 中将键从字符串更改为元组?例如:

dict = {'100,2': 0.3, "2,5" = 0.5}
Run Code Online (Sandbox Code Playgroud)

python dictionary

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

将dict中的2个值与所有其他值进行比较

有没有一种简单的方法可以将字典中的2个值与所有其他值进行比较?例如,如果我有一个词典:

dict = {A:12, B:1, C:14, D:13, E:3, F: 4}
Run Code Online (Sandbox Code Playgroud)

我想找到可以加在一起的所有值,以等于另一个值.例如A + B = D,因此将返回A,B和D.

python dictionary

0
推荐指数
1
解决办法
84
查看次数