我正在研究一个使用大小为 n*n 的动态矩阵的幻方问题。它用数字 1-n^2 填充矩阵,并且每一行、列和对角线的总和必须相同。该算法的条件之一是检查矩阵中的元素是否已经在其中一个循环中输入了数字。我在检查矩阵中的某个元素是否已经输入了数字时遇到问题,所以我想知道如何检查元素是否为空。
这是我的那部分算法的代码:
else if(matrix[row][col] != 0)
{
row = row + 2;
col--;
}
出于某种原因,它在包含循环的第 5 次迭代中触发此 if 语句。我已经使用幻方算法在纸上解决了这个问题,循环的第 5 次迭代将它带到矩阵中的一个空元素。我认为如果一个元素为空,它的值为 0?我很困惑,感谢您的帮助。谢谢。
最佳答案
默认情况下,C 和 C++ 中的数组不为空。您需要将元素显式设置为 0
或以将它们初始化为 0
的方式创建数组。
您面临的是未定义的行为。未初始化的数组有一些随机(读取垃圾)值,访问这些值会导致未定义的行为。
在全局范围内或使用 static
限定符创建的数组将被初始化为 0
或者您可以使用 initialization provided built in by the language或者您可以将每个元素显式设置为 0
。
有多种方法可以做到这一点,最好的方法取决于您想从数组中提取什么行为。
关于c++ - 如何判断多维数组中的元素是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030213/