【问题标题】:Help with understanding Pseudo-code帮助理解伪代码
【发布时间】:2010-03-07 20:15:11
【问题描述】:

谁能告诉我如何实现下面这行伪代码。

c[k]=c[k] (mod M) with |c[k]|<=M/2

我不明白'with'是什么意思,是否意味着我必须确保在减少模M之后,c[k]必须小于或等于M/2。伪代码中的“with”通常是什么意思(如果有的话)?

请注意,M 是 int 类型。如果有帮助,我将在 Java 中实现它。

提前致谢。

【问题讨论】:

  • 在我看来,这不是伪代码,它更像是与语言无关的代码。伪代码应该由结构化为算法的英文单词组成。
  • 你能指定出现这种情况的算法吗?
  • 更多上下文肯定会帮助我们。

标签: java pseudocode


【解决方案1】:

我认为这意味着设置c[k] = c[k] + x*M,其中-M/2 &lt;= c[k] + x*M &lt;= M/2(选择正整数或负整数x,这样就可以了)。

例如,如果 M = 5,我们将有:

旧值 新值 c[k] 的 c[k] 8 -2 9 -1 10 0 11 1 12 2 13 -2

【讨论】:

  • 您可以将其实现为int d = c[k] % M; if (d &gt; M/2) d -= M else if (d &lt; -(M/2)) d += M; c[k] = d;
【解决方案2】:

嗯。马虎的伪代码,呵呵。但我认为他是说 c[k] 的绝对值也将小于或等于 M 的模值除以 2。但这或多或少只是一个猜测。我从来没有遇到过使用这个术语(with)的伪代码。也许他只是想让人们知道,由于模算术,c[k] 总是被保证在范围内。

【讨论】:

  • 如果c[k] 的值始终在模数的范围内,则不需要模数。
【解决方案3】:

这一定是伪代码吗?通常,伪代码只是描述代码将做什么,但使用更自然的语言(例如更像英语)。在这种情况下,我不确定所描述的内容。此外,我认为“与”不一定具有特殊含义,尤其是在没有看到所写其余内容的上下文的情况下。如果您提供更多信息可能会有所帮助。

【讨论】:

  • AKA = “也称为”,我想你的意思是说“例如” (示例,例如)在这里。它甚至可以被忽略。 /nitpick ;)
  • @BalusC - 很好的收获。我打字的时候根本没想到。
【解决方案4】:

c[k]=c[k] (mod M) with |c[k]|

if(Math.abs(c[k]) <= M/2){
  c[k] %= M;
}

“With”来自数学,意思是“如果条件为真,那么就这样做”

你已经标记了这个“java”,所以我使用了 Java 数学库。

【讨论】:

  • 其实,如果是if then,那就是if,而不是with。数学中的“有”更多是一种约束或界限。
  • 我认为,正如已经多次提到的那样,这个问题存在严重的问题,即没有人完全确定问题是什么。
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多