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

    要求描述:给你一个二维矩阵,每行从左到右递增,每列从上往下递增,给你一个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
    
    */
    

      

  • 相关阅读:
    hasCode in Java
    如何区分同一Class的不同实例对象
    如何构建XML文件
    Spring <context:property-placeholder/>的作用
    关于List的几个方法
    Java 中那些不常用的关键字
    设计模式
    Java源代码阅读-Object.toString()
    修复启动项
    centos关闭防火前
  • 原文地址:https://www.cnblogs.com/chengsheng/p/5601918.html
Copyright © 2011-2022 走看看