【问题标题】:Check if numbers are in a specific sequence检查数字是否按特定顺序
【发布时间】:2013-01-18 22:04:34
【问题描述】:

我有一个包含 4 个按升序排列的数字的 int 数组。

我想看看这些数字是否符合这条规则:

1, 2, 3, 4 or
5, 6, 7, 8 or
9, 10, 11, 12 or
13, 14, 15, 16
etc.

他们不可能

2, 3, 4, 5 or
4, 5, 6, 7 or
23, 24, 25, 26
etc

所以它们必须按顺序排列,但只能在这 4 组中!

我尝试将所有数字相加(例如 1+2+3+4)并以 12 为模求和,结果始终为 10、2、6、10、2、6,等等。我的想法是检查结果是否是这三个数字 2、6 或 10 之一。

但它不能工作因为例如 (17+18+19+20)%12 是 2 这是合法的,但例如 (2+3+4+5)%12 是2 也是,但它不合法,所以它会是一个错误的结果。

【问题讨论】:

  • 我假设你有一个二维数组。对于每一行,查找 y 列的值是否为 4 + 前一列 x 的值。

标签: java arrays int modulo


【解决方案1】:

让数字为

a, a+1, a+2, a+3

规则是

a % 4 == 1    // is the same as:  a & 3 == 1

【讨论】:

  • +1 表示按位与。还有 (a1 + a2 + a3 + a4 - 10) % 4 = 0 他笑着说。
  • 对不起,我是新人,这是我的第一篇文章,但我现在接受了答案
【解决方案2】:

如果我清楚地理解了您的问题,那么您只需要检查序列中的最后一个数字是否可以被 4 整除。如果能被 4 整除,则为有效数列。

所以,如果您的序列是:-a1a2a3a4。检查这个条件:-

a4 % 4 == 0

如果上述条件为真,那么你有一个有效的序列。

【讨论】:

    【解决方案3】:

    说你数组的第一个数字是x 那么x取模4必须等于1

    if (a[0]%4 == 1)
      return true;
    else 
      return false;
    

    或者如果
    a[1] % 4 == 2

    a[2] % 4 == 3

    a[3] % 4 == 0
    

    【讨论】:

      【解决方案4】:

      我能看到的最简单的规则是;

      array[3] % 4 == 0
      

      也就是说,数组中的最后一个元素除以 4。这将是一个简单的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-10
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 2021-08-01
        相关资源
        最近更新 更多