检查数组中的任何值是否等于添加到数组的当前值

时间:2017-06-08 03:07:13

标签: c++ arrays multidimensional-array

我有一个初始化为Storage[100][3]的2D数组。

我将一个组值插入到数组的每一行,然后移到下一行并执行相同的操作, 例如:

1 1 3

2 5 6

3 1 3

(继续前进到100行)

在完成插入1整行之后,我想检查当前插入的第2列和第3列中的值是否与前一行,第39列中的值相匹配; s 2和3。

例如,在上面的数据集中,我查看每行中的第2列和第3列,并看到第1行和第3行在这些列中具有相同的值。

我编写了一个程序,可以将当前插入与上一次插入进行比较。但我想将当前插入与数组中的所有插入进行比较。

const int col=0;

//inserting the values//
for (int row= 0; row < 100; row++) {
    storage[row][col] = t;
    storage[row][col += 1] = xi;
    storage[row][col += 2] = yi;
}

//trying to check if the values are same. need help here//
for (int row = 0; row < 100; row++) {
    if (storage[row][col + 1]==storage[row + 1][col + 1] 
        && storage[row][col + 2] == storage[row + 1][col + 2]) {

    }
}

2 个答案:

答案 0 :(得分:0)

for (int row = 1; row < 100; row++) {
    for (int prevRow = 0; prevRow < row; prevRow++) {
        if (storage[row][1] == storage[prevRow][1]
            && storage[row][2] == storage[prevRow][2]) {

            // do something...

        }
    }
}

外部循环从row = 1开始,因为第0行没有要比较的先前行。

答案 1 :(得分:0)

如果要创建一个可以很好地扩展O(log2n)而不是O(n ^ 2)的算法,请尝试使用哈希表来跟踪遇到的数字。我的第一次迭代的示例数字是4,2,3 您可以计算您遇到重复数字的次数,最重要的是,您不必自行完成循环搜索

int main(array<System::String ^> ^args)
{
   std::map<int, int> twoColsCounts;
   int storage[100][3];

   int ordinal1 = 4;
   int ordinal2 = 2;
   int ordinal3 = 3;

   for (int i = 0; i < 100; i++)
   {
      storage[i][0] = ordinal1;
      storage[i][1] = ordinal2;
      storage[i][2] = ordinal3;

      int lastTwoDigits = ordinal2 * 10 + ordinal3;

      auto inMapRecord = twoColsCounts.find(lastTwoDigits);
      if (inMapRecord != twoColsCounts.end())
      {
         // Number Already Found.  Increment count for posterity!
         twoColsCounts[lastTwoDigits]++;
      }
      else
      {
         // Not already encountered - Add it to record with count of 1
         twoColsCounts[lastTwoDigits] = 1;
      }
   }

    Console::WriteLine(L"Done 'big data' style!");
    return 0;
}
祝你好运!