標籤:style blog color io strong for div amp
-
題目描述:
-
在一個二維數組中,每一行都按照從左至右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
-
輸入:
-
輸入可能包含多個測試範例,對於每個測試案例,
輸入的第一行為兩個整數m和n(1<=m,n<=1000):代表將要輸入的矩陣的行數和列數。
輸入的第二行包括一個整數t(1<=t<=1000000):代表要尋找的數字。
接下來的m行,每行有n個數,代表題目所給出的m行n列的矩陣(矩陣如題目描述所示,每一行都按照從左至右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
-
輸出:
-
對應每個測試案例,
輸出”Yes”代表在二維數組中找到了數字t。
輸出”No”代表在二維數組中沒有找到數字t。
-
範例輸入:
-
3 351 2 34 5 67 8 93 312 3 45 6 78 9 103 3122 3 45 6 78 9 10
-
範例輸出:
-
YesNoNo
楊氏矩陣。但是這題有bug,先給的目標值後給的矩陣,這樣在輸入矩陣時就可以判斷了。矩陣都不用存下來。
1 #include <cstdio> 2 3 int m, n; 4 int t; 5 int a[1000][1000]; 6 7 void getRes() { 8 int row = 0, col = n - 1; 9 while (col >=0 && row < m) {10 if (a[row][col] > t) {11 --col;12 } else if (a[row][col] < t) {13 ++row;14 } else {15 printf("Yes\n");16 return;17 }18 }19 printf("No\n");20 }21 22 int main() {23 while (scanf("%d %d", &m, &n) != EOF) {24 scanf("%d", &t);25 for (int i = 0; i < m; ++i) {26 for (int j = 0; j < n; ++j) {27 scanf("%d", &a[i][j]);28 }29 }30 getRes();31 }32 return 0;33 }34 35 /**************************************************************36 Problem: 138437 User: hupo25038 Language: C++39 Result: Accepted40 Time:670 ms41 Memory:4928 kb42 ****************************************************************/