乙個從左到右,從上到下依次遞增的數值的二維陣列,設計乙個演算法找出值a。
思路:以二維陣列的右上角的為突破點(設值為b),如果a大於b,則可以消掉最上面那行,反之,可以消掉最右邊那列。迴圈可找到那個值(當然如果二維陣列中有那個值的話)。
程式如下:
#includeusing namespace std;
bool find(int* matrix,int rows,int cols,int num)
else if (matrix[row*cols+col]>num) col--;
else row++;
} }return found;
}int main()
; printf("begin!\n");
bool found=find((int*)a,4,4,1);
//魯棒性測試:輸入空指標
//bool found=find(null,3,3,2);
if (found) printf("pass\n");
else printf("failed\n");
cin.get();
}
面試題3 二維陣列查詢某數
題目描述 在乙個二維陣列中,查詢某個數。這個二位陣列的每一行和每一列都是遞增的。解決 查詢都是從右上角的數 該數 開始查詢。如果查詢的數 該數,則直接返回true 如果查詢的數 該數,則說明要查詢的數在該數的左邊,那麼列數 1 如果查詢的數 該數,則說明要查詢的數在該數的下邊,那麼行數 1.直至查詢...
面試題3 二維陣列中的查詢
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為兩個整數m和n 1 m,n 1000 代表將要輸入的矩陣的行...
面試題3 二維陣列中的查詢
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為兩個整數m和n 1 m,n 1000 代表將要輸入的矩陣的行...