我需要检查二维数组是否按降序排列。
我写了一个灵魂但不满意。 这是我的工作代码:
bool sorted(void)
{
int prev = board[0][0];
int counter = 0;
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
if (board[i][j] < prev){
return false;
}
prev = board[i][j];
counter++;
if (counter == d * d - 1 ){
return true;
}
}
}
return true;
}
我正在寻找一种只使用条件的方法,没有计数器。这是我试过的:
bool sorted(void)
{
int prev = board[0][0];
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
if (board[i][j] < prev && board[i][j] != 0){
return false;
}
prev = board[i][j];
}
}
return true;
}
这不起作用。假设数组已排序,没有
&& board[i][j] != 0
一旦检查了最后一个元素,我就会得到假,因为0&lt; 1。
我几乎破坏了我的头脑。 你能提出一些想法吗?谢谢!答案 0 :(得分:2)
尝试以下方法:
bool sorted(void)
{
int prev = board[0][0];
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
if (board[i][j] < prev && board[i][j] != 0){
return false;
}
}
prev = board[i][j];
}
return true;
}
答案 1 :(得分:1)
您可以解决更改#include <limits.h> // for INT_MIN
// ...
bool sorted(void)
{
int prev = INT_MIN; // <-- initialize with the lowest possible value
for (int i = 0; i < d; i++){
for (int j = 0; j < d; j++){
if (board[i][j] < prev){
return false;
}
prev = board[i][j];
}
}
return true;
}
的初始值的问题:
<button ng-show="!lastView()" sp-button="default" class="floatRight" ng-click="nextView()">Next</button>
<span ng-show="lastView()" class="floatRight">No more pressing left... </span>