Какой самый оптимальный способ для 2D квадратной матрицы с чередующимися 1 и 0 в C - PullRequest
0 голосов
/ 01 июня 2018

что-то вроде ниже, например:

| 0 1 0 1 0 |
| 1 0 1 0 1 |
| 0 1 0 1 0 |
| 1 0 1 0 1 |
| 0 1 0 1 0 |

Является ли следующий подход хорошим, но это все равно не даст требуемый результат:

void AltBitArray(int array[][4], int size)
{
  int row, column;
  int val = 0;

  for (row = 0; row < size; row++) {
    for (column = 0; column < size; column++) {
      if (val == 0) {
        array[row][column] = val;
        val = 1;
      }
      else
      {
        array[row][column] = val;
        val = 0;
      }
    }
  }
}

1 Ответ

0 голосов
/ 01 июня 2018

Y конвертирует подробный код следующим образом:

  for (row = 0; row < size; row++) {
    for (column = 0; column < size; column++) {
      if (val == 0) {
        array[row][column] = val;
        val = 1;
      }
      else
      {
        array[row][column] = val;
        val = 0;
      }
    }
  }

в следующий

  for (row = 0; row < size; row++) {
    for (column = 0; column < size; column++) {
      array[row][column] = val;
      val = val ^ 1; // or with val = 1 - val;
    }
}

Вот рабочая демонстрация https://ideone.com/AEpRjH

// Output
0 1 0 1 0 
1 0 1 0 1 
0 1 0 1 0 
1 0 1 0 1 
0 1 0 1 0 
...