二维数组关键字查找

来源:互联网 发布:万网域名转移godaddy 编辑:程序博客网 时间:2024/06/07 18:21

题目:  一个二维数组, 每行从左至右递增, 每列从上到下递增; 给一关键值, 查找数组中是否存在该关键值

             如下示例

                             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);  //排除row行
    }else
    {
        return FindKey(a, key, row, col-1);  //排除col列
    }
}

int main()
{
    int a[][N] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 8, 10, 13}, {6, 8, 11, 15}};
    int key = 15;
    int ret = FindKey(a, key, 0, N-1);
    cout << ret;                // 1代表找到    0代表没找到
    system("pause");
}

0 0
原创粉丝点击