1 #include<cstdio> 2 3 bool Find(int* matrix, int rows, int columns, int number) 4 { 5 bool result = false; 6 if(matrix != nullptr && rows > 0 && columns > 0) 7 { 8 int row_begin = 0; 9 int col_begin = columns - 1; //3 [0, 3] 10 11 while (columns >= 0 && row_begin < rows) 12 { 13 if (matrix[row_begin*columns + col_begin] == number) 14 { 15 result = true; 16 return result; 17 } 18 else if (matrix[row_begin*columns + col_begin] > number) 19 col_begin--; // 2 1 20 else 21 row_begin++; 22 } 23 } 24 return result; 25 } 26 27 void Test(char* testName, int* matrix, int rows, int columns, int number, bool expected) 28 { 29 if (testName != nullptr) 30 printf("%s begins: ", testName); 31 bool result = Find(matrix, rows, columns, number); 32 if (result == expected) 33 { 34 printf("passed.\n"); 35 } 36 else 37 printf("failed.\n"); 38 } 39 40 void Test1() 41 { 42 int matrix[][4] = { {1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15} }; 43 Test("Test1", (int*)matrix, 4, 4, 7, true); 44 } 45 void Test2() 46 { 47 int matrix[][4] = { { 1,2,8,9 },{ 2,4,9,12 },{ 4,7,10,13 },{ 6,8,11,15 } }; 48 Test("Test1", (int*)matrix, 4, 4, 5, false); 49 } 50 void Test3() 51 { 52 int matrix[][4] = { { 1,2,8,9 },{ 2,4,9,12 },{ 4,7,10,13 },{ 6,8,11,15 } }; 53 Test("Test1", (int*)matrix, 4, 4, 1, true); 54 } 55 void Test4() 56 { 57 int matrix[][4] = { { 1,2,8,9 },{ 2,4,9,12 },{ 4,7,10,13 },{ 6,8,11,15 } }; 58 Test("Test1", (int*)matrix, 4, 4, 15, true); 59 } 60 void Test5() 61 { 62 int matrix[][4] = { { 1,2,8,9 },{ 2,4,9,12 },{ 4,7,10,13 },{ 6,8,11,15 } }; 63 Test("Test1", (int*)matrix, 4, 4, 0, false); 64 } 65 void Test6() 66 { 67 int matrix[][4] = { { 1,2,8,9 },{ 2,4,9,12 },{ 4,7,10,13 },{ 6,8,11,15 } }; 68 Test("Test1", (int*)matrix, 4, 4, 16, false); 69 } 70 void Test7() 71 { 72 Test("Test1", nullptr, 0, 0, 16, false); 73 } 74 int main(int argc, char* argv[]) 75 { 76 Test1(); 77 Test2(); 78 Test3(); 79 Test4(); 80 81 Test5(); 82 Test6(); 83 Test7(); 84 return 0; 85 }