标签: pseudocode

伪代码 - 正式规则

有没有人提出正式伪代码标准的提案?

作为一个“粗略”的标准来推断理解是否更好?

pseudocode

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

Tarjan 算法:时间复杂度和轻微修改的可能性

这个问题与最近在这里提出的问题有关但又不同。

我刚刚阅读了维基百科伪代码

algorithm tarjan is
  input: graph G = (V, E)
  output: set of strongly connected components (sets of vertices)

  index := 0
  S := empty
  for each v in V do
    if (v.index is undefined) then
      strongconnect(v)
    end if
  end for

  function strongconnect(v)
    // Set the depth index for v to the smallest unused index
    v.index := index
    v.lowlink := index
    index := index + 1
    S.push(v)

    // Consider successors of v
    for each (v, …
Run Code Online (Sandbox Code Playgroud)

algorithm graph pseudocode tarjans-algorithm

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

如何为定义区域计算地图上点的平均密度?

假设我有经纬度坐标的2万余个数据点。所有这些点都落在地图上的定义区域内。我想计算四分之一英里半径内这些点的平均密度。

我在解释它时遇到了麻烦,但是用例是可以输入一些任意坐标,查看该点四分之一英里半径内有多少个点,并确定该点是高于还是低于数据平均值。

我不是在寻找任何特定语言的解决方案,而是在寻找一种通用的(伪代码)解决方案或解决此问题的方法。

algorithm math pseudocode geo

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

不了解 Hopper 反编译器输出

我知道一些 C 和一点汇编,想开始学习逆向工程,所以我下载了适用于 Mac 的 Hopper Disassembler 试用版。我创建了一个超级基本的 C 程序:

int main() {
    int a = 5;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并使用 -g 标志编译它(因为我之前看到过这个并且不确定它是否重要):

gcc -g simple.c
Run Code Online (Sandbox Code Playgroud)

然后我a.out在 Hopper Disassembler 中打开文件并点击伪代码按钮,它给了我:

int _main() {
    rax = 0x0;
    var_4 = 0x0;
    var_8 = 0x5;
    rsp = rsp + 0x8;
    rbp = stack[2047];
    return 0x0;
}
Run Code Online (Sandbox Code Playgroud)

我在这里理解的唯一一行是将变量设置为0x5. rsp = rsp + 0x8;对于这样一个简单的程序,我无法理解所有这些附加行的用途(例如)。有人愿意向我解释这个吗?

此外,如果有人知道逆向工程介绍的良好来源/教程,那也会非常有帮助。谢谢。

c assembly reverse-engineering pseudocode hopper

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

使用 POSIX 共享内存和信号量以块的形式传输文件

全面披露:虽然这不是针对课程的,但它是一个简化的示例,涉及我之前的作业(现已通过)中遇到的问题。

考虑使用 POSIX 共享内存在两个进程之间传输文件。生产者进程共享从文件中读取的内容,并将其按块写入共享内存区域;消费者进程从该区域读取一大块字节并将其写出(例如写入文件)。起初,我尝试了一种简单的同步方法 - 只是锁定对信号量中共享内存的访问 - 但当然,这允许单个写入/读取的多个读取/写入。

我想我已经找到了一种方法来做到这一点,即使用第二个共享内存区域,根据其当前值阻止对读取器或写入器的访问。然后,用伪代码:

before request begins:
    initialize shared memory region SHM
    initialize synchronization region SHM2 = "0"
    initialize sem

consumer:
    loop until total bytes read = file length:
        while (SHM2 == "0" [lock access to SHM2 while checking]):
            wait

        read N bytes from SHM
        write N bytes to file

        sem_wait(sem)
        set SHM2 = "0"
        sem_post(sem)

producer:
    loop until total bytes written = file length:
        while (SHM2 == "1" [lock access to SHM2 while checking]): …
Run Code Online (Sandbox Code Playgroud)

c semaphore pseudocode shared-memory multiprocessing

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

以最小步骤将给定整数转换为另一个整数

给出两个数字相等的数字A和B. 通过在每个步骤中增加或减少A中的单个数字,找到将A转换为B的最小步骤数.
例如:如果A = 133且B = 343,则可能的解决方案是133 - > 233 - > 333 - > 343.所需的最小步数为3.

我试过蛮力的方法.这是我的伪代码

  while(a!=b)
  {
   if(a<b)
      {
        find (b-a)
        count number of digits in (b-a) keep it as n
        add the power(10,n) to a
        moves++;
       }
     else{
       find (a-b)
        count number of digits in (a-b) keep it as n
        subtract the power(10,n) from a
        moves++;
        }

  }
Run Code Online (Sandbox Code Playgroud)

我无法在所有测试用例中得到正确的答案.请建议一个有效的方法来做到这一点.

c++ algorithm pseudocode

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

带 for 循环的伪代码

我有一些困惑:

for i = 1 to n
Run Code Online (Sandbox Code Playgroud)

这个伪代码的意思是for(i=1; i<n; i++)for(i=1; i<=n; i++)

如果其中一个来自其中,那么另一个的伪代码是什么?

algorithm pseudocode

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

如何用C实现埃拉托色尼筛法算法?

在我的书中,Stephen G. Kochan 的《C 语言编程》(第四版)中,我有一个实现埃拉托斯特尼筛法算法的任务,如下所示:

\n

显示 1 到 n = 150 之间的所有素数

\n
    \n
  • 步骤1:定义一个整数数组P。将所有元素Pi设置为0,
  • \n
  • \n
         2 <= i <= n.\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
  • 步骤 2:将 i 设置为 2。
  • \n
  • 步骤3:如果i > n,算法终止。
  • \n
  • 步骤 4:如果 Pi 为 0,则 i 为素数。
  • \n
  • 步骤5:对于j的所有正整数值,使得ixj \xe2\x89\xa4 n,
  • \n
  • \n
         set <sub>Pixj</sub> to 1.\n Step 6: Add 1 to i and go to step 3.\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

我理解广泛的概念,但很难理解算法中的步骤以及每个步骤的目的。

\n

问题:

\n
    \n
  1. 在步骤1中,将所有元素p[i]设置为0的目的是什么?数组元素不需要从 0 到 150 开始吗​​?

    \n
  2. \n
  3. 在步骤 4 …

c arrays algorithm primes pseudocode

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

将伪代码转换为c#代码

我有一个非常简单的问题,我如何在c#代码中转换和使用这个伪代码?

repeat
 i=i+1;
 until x[i]>=j
Run Code Online (Sandbox Code Playgroud)

我的意思是c#中的代码执行此代码的相同工作?谢谢

c# pseudocode

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

遍历所有rgb值

rgb范围为0-255(红色,绿色和蓝色)表示应该有256x256x256个可能的rgb颜色值.

如何循环并打印每个值?

我不需要特定的订单但我只想知道如何通过并获取所有值而不跳过任何值.

javascript pseudocode

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