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