小编Ele*_*len的帖子

通过放置括号来最大化表达式的动态编程解决方案

我正在尝试实现Coursera 上的算法工具箱课程中的算法,该算法采用算术表达式(例如 5+8*4-2)并计算其最大可能值。但是,我不太理解所示算法最后部分中索引的选择;我的实现无法使用两个表中初始化的值(用于存储子表达式的最大化和最小化值)来计算值。

evalt 函数只接受 char,将其转换为操作数并计算两位数字的乘积:

def evalt(a, b, op):
    if op == '+':
        return a + b
#and so on
Run Code Online (Sandbox Code Playgroud)

MinMax 计算子表达式的最小值和最大值

def MinMax(i, j, op, m, M):
    mmin = 10000
    mmax = -10000
    for k in range(i, j-1):
        a = evalt(M[i][k], M[k+1][j], op[k])
        b = evalt(M[i][k], m[k+1][j], op[k])
        c = evalt(m[i][k], M[k+1][j], op[k])
        d = evalt(m[i][k], m[k+1][j], op[k])
        mmin = min(mmin, a, b, c, d)
        mmax = max(mmax, a, b, c, d)
    return(mmin, mmax)
Run Code Online (Sandbox Code Playgroud)

这是主函数的主体

def get_maximum_value(dataset): …
Run Code Online (Sandbox Code Playgroud)

python dynamic-programming parentheses

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

实施3向快速排序

我是算法的新手,我很困惑我的代码中的错误在哪里,我正在编写作为一个赋值.我正在尝试在Python 3中实现一个快速排序算法,该算法处理数组中的相等值.

这是一个quicksort函数(代表数组):

def randomized_quick_sort(a, l, r):
    if l >= r:
        return
    k = random.randint(l, r)
    a[l], a[k] = a[k], a[l]
    m1, m2 = partition3(a, l, r)
    randomized_quick_sort(a, l, m1 - 1);
    randomized_quick_sort(a, m2 + 1, r);
Run Code Online (Sandbox Code Playgroud)

这是我的分区功能:

def partition3(a, l, r):
    x, j, t = a[l], l, r
    for i in range(l + 1, r + 1):
        if a[i] < x:
            j +=1
            a[i], a[j] = a[j], a[i]
        elif a[i] > x:
            a[i], a[t] = a[t], a[i]
            t -=1 …
Run Code Online (Sandbox Code Playgroud)

python quicksort

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