在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 輸入: 輸入可能包含多個測試樣例,對於每個測試案例, 輸入的第一行為兩個整數m和n(1<=m,n<=1000):代表將要輸入的矩陣的行數和列數。 輸入的第二行包括一個整數t(1<=t<=1000000):代表要查找的數字。 接下來的m行,每行有n個數,代表題目所給出的m行n列的矩陣(矩陣如題目描述所示,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 輸出: 對應每個測試案例, 輸出”Yes”代表在二維數組中找到了數字t。 輸出”No”代表在二維數組中沒有找到數字t。 樣例輸入: 3 3 5 1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 1 2 2 3 4 5 6 7 8 9 10 樣例輸出: Yes No No 代碼AC: 思想:從右上角開始查詢X,若當前數大於X,則向左邊移動,若小於X,則向下移動! [cpp] #include <stdio.h> int main() { int mat[1000][1000], i, j, m, n, t, flag; while( scanf("%d%d", &m, &n) != EOF ) { scanf("%d", &t); for( i = 0; i < m; i++ ) { for( j = 0; j < n; j++ ) { scanf("%d", &mat[i][j]); } } i = 0; // 最右上點 j = n - 1; flag = 0; while( i < m && j >= 0 ) { if( mat[i][j] < t ) { i++; } else if( mat[i][j] > t ) { j--; } else { flag = 1; break; } } if( flag ) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }