我正在做一个项目,我必须创建一个矩阵并初始化它。
所以这就是我对母体所做的:
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;
}
}
所以当我打印矩阵时,我应该进入
init
,matrice[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;
}