小编sta*_*ius的帖子

每个k = 1..n的所有大小为k的子阵列的最大总和

给定大小为n的数组,对于从1到n的每个k,找到大小为k的连续子阵列的最大和.

这个问题有一个明显的解决方案,时间复杂度为O(N 2)和O(1)空间.Lua代码:

array = {7, 1, 3, 1, 4, 5, 1, 3, 6}
n = #array

function maxArray(k)
    ksum = 0
    for i = 1, k do
        ksum = ksum + array[i]
    end
    max_ksum = ksum
    for i = k + 1, n do
        add_index = i
        sub_index = i - k
        ksum = ksum + array[add_index] - array[sub_index]
        max_ksum = math.max(ksum, max_ksum)
    end
    return max_ksum
end

for k = 1, n do
    print(k, maxArray(k))
end …
Run Code Online (Sandbox Code Playgroud)

arrays algorithm dynamic-programming interval-tree data-structures

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

不导出/ proc/kallsyms中标有"T"的内核符​​号

符号machine_power_off在"T"中标记为/proc/kallsyms:

$ grep -w machine_power_off /proc/kallsyms 
ffffffff8102391b T machine_power_off
Run Code Online (Sandbox Code Playgroud)

但它没有出口.kallsyms中的"T"是否必要且足以导出符号?出口是否必要且足以在其他模块中使用?

我使用它的模块编译时带有警告:

WARNING: "machine_power_off" [/path/to/module.ko] undefined!
Run Code Online (Sandbox Code Playgroud)

在主机(3.2.0-4-amd64)上我可以加载这个模块,但是在VirtualBox(3.16.0-4-amd64)上它产生以下消息:

insmod: ERROR: could not insert module module.ko: Unknown symbol in module
Run Code Online (Sandbox Code Playgroud)

为什么这个模块加载在我的主机系统中,而不是在VirtualBox中?

linux kernel symbols module export

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