所以我有一个数组板[] [],其值不断改变。它是一个方形阵列,尺寸为d * d。我想检查数组以查看其所有值是否按升序排列。
for (int i = 0; i < d; i++)
{
for (int j = 0; i < d; i++)
{
if (board[i][j] == (d * i) + j + 1)
{
return true;
}
else
{
return false;
}
}
}
问题是,只要数组板[0] [0]中的第一个元素= 1,它就返回true,并结束我的代码。我不知道如何实现它,以便它不会返回true,直到数组中的所有元素按升序排列,从1到(d * d - 1)。
谢谢!
答案 0 :(得分:3)
如果我理解你的问题我认为你想这样做:
int Previous = board[0][0];
for (int i = 0; i < d; i++)
{
for (int j = 0; j < d; j++)
{
if (board[i][j] < Previous)
{
return false;
}
Previous = board[i][j];
}
}
return true; // Only at the end do we know that all elements are in ascending order
你所拥有的问题是:
board
值与索引进行比较,而不是其他board
值答案 1 :(得分:2)
这应该有效
for (int i = 0; i < d; i++)
{
for (int j = 0; j < d; j++)
{
if (board[i][j] != (d * i) + j + 1)
{
return false;
}
}
}
return true;
答案 2 :(得分:1)
尝试将return true
替换为continue
:
for (int i = 0; i < d; i++)
{
for (int j = 0; i < d; i++)
{
if (board[i][j] == (d * i) + j + 1)
{
continue;
}
else
{
return false;
}
}
}
如果您反转条件,也可以完全删除continue子句:
if (board[i][j] != (d * i) + j + 1)
{
return false;
}
答案 3 :(得分:0)
1)首先你的意思是升序(垂直,水平或对角线?) 2)替换你的if语句 if((board [i] [j]&gt; board [i] [j + 1])||(board [i] [j]&gt; board [i + 1] [j]))