二维数组中的查找
要求描述:给你一个二维矩阵,每行从左到右递增,每列从上往下递增,给你一个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
*/
    学学学    练练练    刷刷刷
                    
                
                
            
        
浙公网安备 33010602011771号