给定大小为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
符号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中?