小编gyo*_*sko的帖子

了解变革算法

我正在寻找一个很好的解决变更问题的方法,我找到了这个代码(Python):

target = 200
coins = [1,2,5,10,20,50,100,200]
ways = [1]+[0]*target
for coin in coins:
    for i in range(coin,target+1):
        ways[i]+=ways[i-coin]
print(ways[target])
Run Code Online (Sandbox Code Playgroud)

我理解代码的字面意思是没有问题,但我无法理解为什么它有效.有人可以帮忙吗?

python algorithm dynamic-programming

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

C编程中的Fork()函数

我只需要理解这句话:

if (fork() && !fork())
Run Code Online (Sandbox Code Playgroud)

不应该总是假的吗?我的意思是,如果我写:

if (a && !a)
Run Code Online (Sandbox Code Playgroud)

它总是假的,所以第一个也应该总是假的,我错了吗?我当然是,但我希望有人可以向我解释这个奇怪的事情.

我正在攻读C考试,我必须解决这个问题:

int main(){
if(fork && !fork()){
   printf("a\n");
}
else printf("b\n");
}
Run Code Online (Sandbox Code Playgroud)

c fork

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

你将如何实现除数函数?

除数函数是一个自然数的约数的总和.

进行一些研究我发现如果你想找到给定自然数N的除数函数,是一个非常好的方法,所以我试着用Python编写代码:

def divisor_function(n):
    "Returns the sum of divisors of n"
    checked = [False]*100000
    factors = prime_factors(n)
    sum_of_divisors = 1 # It's = 1 because it will be the result of a product
    for x in factors:
        if checked[x]:
            continue
        else:
            count = factors.count(x)
            tmp = (x**(count+1)-1)//(x-1)
            sum_of_divisors*=tmp
            checked[x]=True
    return sum_of_divisors
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我确信它可以改进(例如:我创建一个包含100000元素的列表,但我没有使用它们中的大部分).

你会如何改进/实施它?

PS这是prime_factors:

def prime_factors(n):
    "Returns all the prime factors of a positive integer"
    factors = []
    d = 2
    while …
Run Code Online (Sandbox Code Playgroud)

python math numbers

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

Javascript排序回调

我需要排序一个大的Javascript项目列表,我正在使用这样的sort函数:

var sorted_list = non_sorted.sort(function(a,b){
// Sort stuff here
});
Run Code Online (Sandbox Code Playgroud)

我想做的是在sort函数完成时调用函数.

是否可以添加回调函数来排序或在事件结束时触发事件sort

javascript sorting

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

标签 统计

python ×2

algorithm ×1

c ×1

dynamic-programming ×1

fork ×1

javascript ×1

math ×1

numbers ×1

sorting ×1