zoukankan      html  css  js  c++  java
  • 九度 二维数组中的查找

    /*
     * c.cpp
     *
     *  Created on: 2013-10-7
     *      Author: wangzhu
     */
    
    #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() {
        freopen("data.in", "r", stdin);
        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
    ");
            } else {
                printf("No
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    gulp的使用
    Js中call(),apply()的使用
    HTML中<meta>标签的使用
    字符串及数组常用方法
    css—transform
    《Java设计模式》——适配器模式
    全文检索工具包Lucene以及企业及应用Solr的学习(二)—— solr中edismax用到的Query Function以及java扩展
    全文检索工具包Lucene以及企业及应用Solr的学习(一)
    最近发现服务器发生了一些问题
    TxT读取写入
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/3355601.html
Copyright © 2011-2022 走看看