有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存。
矩阵每一行元素从左到右依次递增;每一列从上到下依次递增 此特点可以通过每行从左到右是递增的,每列从上到下是递增的 二维数组来实现
代码实现
#include<stdio.h> int find_num(int arr[3][3], int* a, int* b, int k) { int x = 0; int y = *b - 1; //x从第一行开始向下比较 //y从右向左遍历 while (x <= *a - 1 && y >= 0) { if (k < arr[x][y]) { y--; } else if (k > arr[x][y]) { x++; } else { *a = x; *b = y; return 1; } } return 0; } int main() { int arr[3][3] = { 1,2,3,4,5,6,7,8,9 }; int a = 3; int b = 3; int k = 0; printf("请输入待查数字>"); scanf("%d", &k); int ret = find_num(arr, &a, &b, k); if (ret == 0) { printf("该数字不存在\n"); } else { //输出待查数字在矩阵中的坐标 printf("%d %d", a, b); } return 0; }