杨氏矩阵 :有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的。编写程序,在这样的数组中查找一个数字是否存在
程序代码如下:
#include <stdio.h>
#define ROW 3
#define COL 4
int Find(int arr[ROW][COL], int *row, int *col, int n)
{
*row = 0;
*col = COL - 1;
while ((*row < ROW) && (*col >= 0))
{
if (arr[*row][*col] > n)
{
(*col)--;
}
else if (arr[*row][*col] < n)
{
(*row)++;
}
else
return 1;
}
return 0;
}
int main()
{
int arr[ROW][COL] = {{1,2,3,4},{5,7,9,10},{21,37,46,98}};
int input = 0;
int row = 0;
int col = 0;
printf("请输入一个整数:");
scanf("%d", &input);
int ret = Find(arr, &row, &col, input);
if (ret == 1)
{
printf("row = %d,col = %d\n",row,col);
}
else
{
printf("Not found\n");
}
return 0;
}
程序运行结果如下: