我不会写所有的代码你,但会建议一些事情让你的轨道上。您应该了解如何遍历二维数组(矩阵)以及如何迭代该矩阵内的单个行或列。
由于矩阵的(硬编码)的定义,看起来像这样:
struct Matrix4x4
{
int m[4][4];
};
遍历你想写这样的所有元素:
Matrix4x4 matrix;
for (size_t row = 0; row < 4; ++row)
{
for (size_t col = 0; col < 4; ++col)
{
// do something with 'matrix.m[row][col]'
}
}
这会遍历你矩阵从左上角(0,0)到右下角(3,3)。我假设这是你被告知使用的遍历顺序。
要处理你想写这样的一行:
void FunctionThatOperatesOnARow(Matrix4x4& matrix, size_t row)
{
for (size_t col = 0; col < 4; ++col)
{
// do something with 'matrix.m[row][col]'
}
}
要处理你想写这样的一列:
void FunctionThatOperatesOnAColumn(Matrix4x4& matrix, size_t col)
{
for (size_t row = 0; row < 4; ++row)
{
// do something with 'matrix.m[row][col]'
}
}
你现在需要做的是修改第一个代码遍历所有元素并让它检查1.然后需要调用适当的函数来清除当前的列和行(可以基于后两个示例)。
对于最终的结果,你可以在每次只需增加一个本地计数器变量你检测1.
请发布一些你已经尝试过的代码。这个社区是用来帮助那些没有编写所有代码的代码。 –
这是功课吗? – Amy
我不明白。你是否需要清理矩阵,使得矩阵的数量最大,或者你只需要迭代低谷,在找到东西的时候删除东西,最后计算你找到了多少东西?前一个我觉得有点困难。 – SinistraD