//杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>//递归写法
int sreach_k(int arr[3][3], int row, int col,int k,int x, int y,int *px,int *py)//**从左下角开始查找**
{
if(x<0 || y>=col)
{
*px = -1;
*py = -1;
return 0;
}
if(arr[x][y] == k)
{
*px = x;
*py = y;
return 1;
}
else if(arr[x][y] < k)
{
sreach_k(arr,3,3,k,x,y+1,px,py);//递归,比这个寻找的数字小应该向右走
}
else if(arr[x][y] > k)
{
sreach_k(arr,3,3,k,x-1,y,px,py);//比这个寻找的数字小应该向上走
}
}
int main()
{
int arr[3][3] = {1,2,3,4,5,6,7,8,9};
int px;//**定义俩个用于返回数组下标的变量**
int py;
sreach_k(arr,3,3,8,2,0,&px,&py);
printf("%d %d",px,py);
return 0;
}