小编luc*_*old的帖子

视觉上For循环中fork()会发生什么

我一直试图了解fork()行为.这一次在for-loop.请注意以下代码:

#include <stdio.h>

void main()
{
   int i;

   for (i=0;i<3;i++)
   {
      fork();

      // This printf statement is for debugging purposes
      // getppid(): gets the parent process-id
      // getpid(): get child process-id

      printf("[%d] [%d] i=%d\n", getppid(), getpid(), i);
   }

   printf("[%d] [%d] hi\n", getppid(), getpid());
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

[6909][6936] i=0
[6909][6936] i=1
[6936][6938] i=1
[6909][6936] i=2
[6909][6936] hi
[6936][6938] i=2
[6936][6938] hi
[6938][6940] i=2
[6938][6940] hi
[1][6937] i=0
[1][6939] i=2
[1][6939] hi
[1][6937] i=1
[6937][6941] i=1
[1][6937] i=2
[1][6937] …
Run Code Online (Sandbox Code Playgroud)

c fork

63
推荐指数
3
解决办法
4万
查看次数

从Bootstrap DropDown获取具有特定ID的选定项值

我正在使用Bootstrap 3JavaScript "创建"我自己的"ComboBox" .Here is the JSFiddle对于我到目前为止:

HTML:

<div class="input-group">                                            
    <input type="TextBox" ID="datebox" Class="form-control"></input>
    <div class="input-group-btn">
        <button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
            <span class="caret"></span>
        </button>
        <ul id="demolist" class="dropdown-menu">
            <li><a href="#">A</a></li>
            <li><a href="#">B</a></li>
            <li><a href="#">C</a></li>
        </ul>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$(document).on('click', '.dropdown-menu li a', function() {
    $('#datebox').val($(this).html());
}); 
Run Code Online (Sandbox Code Playgroud)

这种方法效果很好,直到我想在页面上多次重复这个"ComboBox".问题在于JQuery函数正在寻找ANY/ALL '.dropdown-menu li a'.

如何更改我的JQuery以查找具有ID demolist的 UL 并获取其选定值?

我试过以下没有成功:

我尝试过'#demolist .dropdown-menu li a'但不会触发该功能:

$(document).on('click', '#demolist .dropdown-menu li a', function() {
    $('#datebox').val($(this).html());
}); 
Run Code Online (Sandbox Code Playgroud)

我尝试调用 …

html javascript jquery twitter-bootstrap

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

关于fork()的问题

我试图理解fork(),所以我把以下示例放在一起:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

void main()
{
   if(fork()==0)
   {
      printf("2");

      if(fork()==0)
      {
          printf("4");
      }
      else
      {
          printf("3");
      }
   } 
   else
   {
      printf("1");
   }
}
Run Code Online (Sandbox Code Playgroud)

当我在纸上描绘时,我画了下面的草图:

在此输入图像描述

所以我认为输出应该是1234.但是,当我运行此代码时,输​​出为12324.这是为什么?我的错误在哪里?

更新:

阅读评论后,建议执行以下任何操作

  1. 添加\n到每个printf语句
  2. 或者:fflush(stdout);在每个printf语句后添加
  3. 或者:添加setbuf(stdout, NULL); <----这就是我最终做的:)

更新我的代码后,输出确实是1234.

c fork

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

如何在图表中找到强连通组件?

我正在尝试自学图论,现在试图了解如何在图中找到SCC.我已在SO读几个不同的问题/答案(例如,1,2,3,4,5,6,7,8),但我不能找到一个与一个完整的一步一步的例子,我可以遵循.

根据CORMEN(算法导论),一种方法是:

  1. 调用DFS(G)来计算每个顶点u的完成时间f [u]
  2. 计算转置(G)
  3. 调用DFS(Transpose(G)),但是在DFS的主循环中,按照减小f [u]的顺序考虑顶点(在步骤1中计算)
  4. 输出步骤3的深度优先林中每棵树的顶点作为单独的强连接组件

观察下面的图表(问题是3.4从这里开始.在这里这里找到了几个解决方案,但我试图打破这个并自己理解它.)

在此输入图像描述

步骤1:调用DFS(G)以计算每个顶点u的结束时间f [u]

从顶点A开始运行DFS:

在此输入图像描述

请注意格式为[Pre-Vist,Post-visit]的RED文本

第2步:计算转置(G)

在此输入图像描述

步骤3.调用DFS(Transpose(G)),但是在DFS的主循环中,按照f [u]递减的顺序考虑顶点(在步骤1中计算)

好的,所以顶点按照访问后(完成时间)值减少的顺序:

{E,B,A,H,G,I,C,D,F,J}

所以在这一步,我们在G ^ T上运行DFS,但从上面列表的每个顶点开始:

  • DFS(E):{E}
  • DFS(B):{B}
  • DFS(A):{A}
  • DFS(H):{H,I,G}
  • DFS(G):从列表中删除,因为它已被访问过
  • DFS(I):从列表中删除,因为它已被访问过
  • DFS(C):{C,J,F,D}
  • DFS(J):从列表中删除,因为它已被访问过
  • DFS(F):从列表中删除,因为它已被访问过
  • DFS(D):从列表中删除,因为它已被访问过

步骤4:将步骤3的深度优先林中的每棵树的顶点输出为单独的强连通分量.

所以我们有五个强关联组件:{E},{B},{A},{H,I,G},{C,J,F,D}

这是我认为是正确的.但是,我在这里这里发现的解决方案是SCC是{C,J,F,H,I,G,D}和{A,E,B}.我的错误在哪里?

algorithm graph-theory strongly-connected-graph

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

深度优先搜索的 Big-O = O(V+E) 怎么样?

我试图了解DFS 的复杂性如何/为什么是 O(V+E)。这是我分析伪代码迭代 DFS 复杂性的尝试。

DFS(G, t)
{

1   stack S = new empty Stack of size G.|V|  ... O(1)
2   S.push(t)                                ... O(1)

3   while(S is not Empty)                    ... O(|V|), this will always be =<|V|
    {
4       u = S.pop()                          ... O(1)

5       if(u.visited = false)                ... O(1)
        {
6            u.visited = true                ... O(1)

7            for-each edge (u,v) in G.E      ... O(|E|), this will always be =<|E|
8                if(v.visited = false)       ... O(1)
9                    S.push(v) …
Run Code Online (Sandbox Code Playgroud)

algorithm big-o time-complexity nested-loops asymptotic-complexity

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