题目: 一个二维数组, 每行从左至右递增, 每列从上到下递增; 给一关键值, 查找数组中是否存在该关键值
如下示例
1, 2, 8, 9
2, 4, 9, 12
4, 8, 10, 13
6, 8, 11, 15
思路:1.从右上角开始查找 若关键值比右上角小, 则排除右上角所在列
若关键值比右上角大, 则排除右上角所在行
2. 递归
代码:
#include <iostream>
#include <vector>
using namespace std;
#define M 4
#define N 4
int FindKey(int (*a)[N], int key, int row, int col)
{
if (row>=M || col<0)
return 0;
if (key == a[row][col])
{
return 1;
}else if (key > a[row][col])
{
return FindKey(a, key, row+1, col);