C:检查二维数组是否按降序排列,不包括0

时间:2016-11-18 12:55:01

标签: c arrays

我需要检查二维数组是否按降序排列。

我写了一个灵魂但不满意。 这是我的工作代码:

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。

我几乎破坏了我的头脑。 你能提出一些想法吗?谢谢!

2 个答案:

答案 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>