码迷,mamicode.com
首页 > 其他好文 > 详细

九度 1384 二维数组中的查找

时间:2014-10-05 14:46:38      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   for   sp   div   

 

#include<cstdio>
#include<iostream>
using namespace std;
#define NMAX 1000010
int arr[NMAX];
/**
 * 只需要从左下角或右上角开始查找,即可。
 * 当是从右上角开始查找时,
 * 左上角(row = 0,column = columns - 1),
 * 1)若查找的值key大于当前的值arr[i],则说明key在此行以下,故有row++;
 * 2)若查找的值key小于当前的值arr[i],则说明key在此列的左边,故有column--;
 * 3)若相等,则返回true
 * 4)判断条件:row<rows && column >=0,若满足,继续1),若不满足,则直接返回false
 */
bool query(int rows, int columns, int key) {
    bool flag = false;
    int column = columns - 1;
    int row = 0;
    while (row < rows && column >= 0) {
        int temp = arr[row * columns + column];
        if (temp == key) {
            flag = true;
            return flag;
        } else if (temp > key) {
            column--;
        } else {
            row++;
        }
    }
    return flag;
}
/**
 * 当是从左下角开始查找时,
 * 左上角(row = rows - 1,column = 0),
 * 1)若查找的值key小于当前的值arr[i],则说明key在此行以下,故有row--;
 * 2)若查找的值key大于当前的值arr[i],则说明key在此列的左边,故有column++;
 * 3)若相等,则返回true
 * 4)判断条件:row >= 0 && column < columns,若满足,继续1),若不满足,则直接返回false
 */
bool query1(int rows, int columns, int key) {
    bool flag = false;
    int column = 0;
    int row = rows - 1;
    int temp = -1;
    while (row >= 0 && column < columns) {
        temp = arr[row * columns + column];
        if (temp == key) {
            flag = true;
            return flag;
        } else if (temp > key) {
            row--;
        } else {
            column++;
        }
    }
    return false;
}
int main() {
    int n, m, t, len;
    bool flag;
    while (~scanf("%d%d%d", &n, &m,&t)) {
        len = n * m;
        for (int i = 0; i < len; i++) {
            scanf("%d", arr + i);
        }
        flag = query1(n, m, t);
        if (flag) {
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    return 0;
}

 

九度 1384 二维数组中的查找

标签:style   blog   color   io   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/xiaoxian1369/p/4006898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!