我正在做一个项目,我必须创建一个矩阵并初始化它。
所以这就是我对母体所做的:

int     levenshtein(char *string1, char *string2)
{
  int32_t       firstWord = strlen(string1);
  int32_t       secondWord = strlen(string2);
  int32_t       matrice[MAXWORD][MAXWORD]; //MAXWORD = 155
  int32_t       i = 0;
  int32_t       j = 0;

  while (i++ < MAXWORD)
    {
      matrice[i][0] = i;
      matrice[0][i] = i;
    }
}

所以当我打印矩阵时,我应该进入initmatrice[0][0] = 0
但当我打印矩阵时,一切都会很好,除非matrice[1][0] = 1等于matrice[1][0]
但是如果增量是这样的,那么它就可以完美地工作
while (i < MAXWORD)
  {
    matrice[i][0] = i;
    matrice[0][i] = i;
    i++
  }

为什么MAXWORD在退出while (i++ < MAXWORD)后会改变matrice[1][0]的结果(而仅matrice[1][0])?

最佳答案

当您在while()语句中执行增量时,您将在进入循环主体之前将1添加到i中因此,在第一次迭代中,i的值将是1,而不是0这就是为什么你从不初始化matrice[0][0]
将增量移动到循环的末尾意味着使用当前值输入它因此,第一次通过循环i将是0,而不是1
循环一系列值的更好方法是使用for,而不是while

for (i = 0; i < MAXWORD; i++) {
    matrice[i][0] = i;
    matrice[0][i] = i;
}

07-25 20:24