小编nom*_*igt的帖子

CFS调度器使用红黑树的原因?

CFS 调度程序根据最小虚拟时间选择下一个进程,并使用红黑树(rbtree)有效地获得该值,使用 rbtree 我们将获得最小 O(h),这里 h 是 rbtree 的高度。但是,使用最小堆我们只能在 O(1) 时间内获得最小虚拟时间进程。我只想知道为什么在 CFS 实现中不考虑 min-heap,在内核级别使用 min-heap 有什么困难吗?

scheduler red-black-tree linux-kernel

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

n个解决方案无法工作的非连续元素

计算由n整除的给定整数数组的非连续子序列数的有效方法是什么?A = {1,2,3,2} n = 6输出3因为12,12,132可以被6整除

我使用动态编程的解决方案给了我错误的结果.它总是给我一个比实际结果更多的东西.

#include <stdio.h>

#define MAXLEN 100
#define MAXN 100
int len = 1,ar[] = {1, 6, 2},dp[MAXLEN][MAXN],n=6;

int fun(int idx,int m)
{
    if (idx >= (sizeof(ar)/sizeof(ar[0])))
        return m == 0;
    if(dp[idx][m]!=-1)
        return dp[idx][m];
    int ans=fun(idx+1,m);                // skip this element in current sub-sequence
    ans+=fun(idx+1,(m*10+ar[idx])%n);    // Include this element. Find the new modulo by 'n' and pass it recursively
    return dp[idx][m]=ans;
}
int main()
{
    memset(dp, -1, sizeof(dp));
    printf("%d\n",fun(0, 0));            // initially we begin by considering …
Run Code Online (Sandbox Code Playgroud)

algorithm recursion memoization dynamic-programming

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

是否使用"内存屏障"实现了linux的"互斥锁"?

我正在阅读这篇文章,其中Robert Love提到互斥是使用内存屏障实现的,但我无法看到在Linux实现互斥锁时使用的内存屏障指令.

我想知道他是否指的是posix库中的互斥锁实现,它确实使用了内存屏障指令,因此它不会对关键资源进行重新排序.我对吗?

linux posix mutex linux-kernel

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

使用bfs或dfs打印排列

我正在尝试使用递归打印字符串的所有排列,如下所示。但是我想知道我们是否也可以使用bfs或dfs来执行此操作,我是否认为正确?

如果是,那么您能给我个主意吗?我的想法是:如果string =“ abcd”,则开始节点:'a'结束节点:'d'中间节点:'b'和'c'

然后我们可以将起始节点更改为“ b”,“ c”和“ d”。

我很难将其可视化以放入算法中。

#include <stdio.h>

void swap(char *s, int i, int j)
{
    char temp = s[i];
    s[i] = s[j];
    s[j] = temp;
}

void foo(char *s, int j, int len)
{
    int i;
    if (j == len-1) {
        printf("%s\n", s);
        return;
    }
    for (i=j;i<len;i++) {
        swap(s, i, j);
        foo(s, j+1, len);
        swap(s, i, j);
    }
}

int main()
{
    char s[] = "abc";
    foo(s, 0, strlen(s));
}
Run Code Online (Sandbox Code Playgroud)

根据Serge Rogatch给出的逻辑,可以解决以下问题:

def swap_two(s, i, j): …
Run Code Online (Sandbox Code Playgroud)

algorithm permutation breadth-first-search depth-first-search

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