小编Eye*_*pie的帖子

递归Karatsuba乘法不起作用?

我正试图通过递归调用实现Karatsuba乘法.下面的代码应该可行,但我一直得到错误的答案.有什么想法吗?

    public static long karatsuba(long x, long y){
        //base case:
        if (x < 10 || y < 10) return x * y;

        //length of digits:
        int xSize = String.valueOf(x).length();
        int ySize = String.valueOf(y).length();
        int N     = Math.max(xSize, ySize);

        //split each number in half (by length of digits):
        long numX_hi = Long.valueOf((String.valueOf(x).substring(0, N/2)));
        long numX_lo = Long.valueOf((String.valueOf(x).substring(N/2, xSize)));
        long numY_hi = Long.valueOf((String.valueOf(y).substring(0, N/2)));
        long numY_lo = Long.valueOf((String.valueOf(y).substring(N/2, ySize)));

        //solve multiplications recursively:
        long z0 = karatsuba(numX_lo,numY_lo);
        long z1 = karatsuba((numX_hi+numX_lo),(numY_hi+numY_lo)); …
Run Code Online (Sandbox Code Playgroud)

java algorithm recursion

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

什么正则表达式将捕获括号/圆括号内的多个实例?

如何使用正则表达式捕获\ +括号内的每个空格字符?例如,在字符串中, "abc and 123 {foo-bar bar baz } bit {yummi tummie} byte." 我应该在里面找到四个匹配{}- 但没有别的.假设Python语言并且字符串内容未知.

编辑:还假设没有嵌套大括号.

python regex

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

如何为迭代深度优先搜索添加完成时间?

我正在尝试创建深度优先算法,该算法指定完成时间(顶点无法再展开的时间),这些算法用于Kosaraju算法等事情.我能够相当容易地创建DFS的递归版本,但是我很难将其转换为迭代版本.

我正在使用邻接列表来表示图形:顶点的字典.例如,输入图{1: [0, 4], 2: [1, 5], 3: [1], 4: [1, 3], 5: [2, 4], 6: [3, 4, 7, 8], 7: [5, 6], 8: [9], 9: [6, 11], 10: [9], 11: [10]}表示边(1,0),(1,4),(2,1),(2,5)等.以下是使用简单堆栈(LIFO)的迭代DFS的实现),但它不计算完成时间.我遇到的一个关键问题是,由于顶点被弹出,一旦顶点完全展开,算法就无法追溯其路径(与递归不同).我该如何解决?

def dfs(graph, vertex, finish, explored):
    global count

    stack = []
    stack.append(vertex)

    while len(stack) != 0:
        vertex = stack.pop()

        if explored[vertex] == False:
            explored[vertex] = True

            #add all outgoing edges to stack:
            if vertex in graph:                 #check if key exists in …
Run Code Online (Sandbox Code Playgroud)

python algorithm graph-theory depth-first-search

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

我可以将错误异常和条件组合在一行中吗?

例如,我的代码执行如下操作:

try:
    for n in graph[x]:
        #...
        #...
        if event == 0:
            #do something
except IndexError:
        #do the same thing
Run Code Online (Sandbox Code Playgroud)

我的if块和我的错误异常块具有相同的确切代码; 所以我没有冗余线,而是想要将两个块组合在一起.我想做一些像except IndexError or if target == 0:有条件的事情.这样做有一个聪明的方法吗?

python error-handling conditional-statements

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