size_t j = 1; size_t i = 1;
for (i=1;i<=a;i++){
for (j=1;j<=b;j++){
board[i][j] = std::min( std::min(board[i - 1][j] + 1,board[i][j - 1] + 1),
board[i - 1][j - 1] + (A[i - 1] == B[j - 1] ? 0 : 1) );
//cout << board[i][j] << endl;
}
}
cout << board[a][b] << endl;
所以我只是在学习 C++:如果你看上面的代码,i 和 j 被定义为两个 for 循环的第一个参数。因为我在此之前声明了 i 和 j,所以我相信我也可以这样做:
for (;i<=a;i++
for (;j<=b;j++)
在我的整个代码中产生了错误的结果。但是,第一个工作正常。任何人都可以对此有所了解吗?提前致谢
我已经对此进行了搜索,并且知道索引变量范围的差异。
最佳答案
这是因为范围,基本上,在您的原始代码中,j
变量在第一个循环的每次迭代中重置为 1:for (j=1;.... )
。但是,在您的代码的第二个版本中,没有重置。
关于c++ - 不同的结果取决于 C++ 中 for 循环的循环索引的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388331/