码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组中的查找

时间:2016-06-20 22:17:43      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

要求描述:给你一个二维矩阵,每行从左到右递增,每列从上往下递增,给你一个val,让你判断值val是否在该矩阵中出现。

思路:从左下角,或者右上角去判断。如左下角,那么如果左下角的数字比val小,那么说明这一列已经不满足条件(因为从上往下递增),如果左下角的数字比val大,那么说明这一行不满足条件(因为从左往右递增)。

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
class Matrix{
    public:
        Matrix(){}
     //   Matrix(int _r,int _c):r(_r), c(_r) {}
        void input(){
            cin>>r >> c;
            for(int i = 0; i < r; i++){
                for(int j = 0; j < c; j++){
                    cin>>mat[i][j];
                }
            }
            cin>>val;
        }
        bool exist(){
            int cc = c;
            c = 0;
            r--;
            while(r >= 0 && c < cc){
                if(mat[r][c] == val) return true;
                else if(mat[r][c] < val){
                    c++;
                }else if(mat[r][c] > val){
                    r--;
                }
            }
            return false;
        }
        ~Matrix(){}
    private:
        int r, c, val;
        int mat[50][50];
};
int main(){

    Matrix tes;
    tes.input();
    if(tes.exist()){
        cout<<"exist"<<endl;
    }else{
        cout<<"not exist"<<endl;
    }
    return 0;
}


/*
4 4
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
7

*/

  

二维数组中的查找

标签:

原文地址:http://www.cnblogs.com/chengsheng/p/5601918.html

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