行列递增矩阵的查找
/*
行列递增矩阵的查找
在一个m行n列的二维数组中,每一行都按照从左到右递增的顺序数列,
每一行都按照从上到下递增的顺序排列。现输入这样的一个二维数组
和一个整数,请完成一个函数,判断数组中是否含有该整数。例如,
给定如图所示的二维数组,它的每一行每一列都递增排序。如果在这
个数组中查找数6,则返回true;如果查找数5,则由于该数组不含有
数5,则返回false。
*/
/*
思路:
首先将其定义为矩阵中最右上角的元素,如果这个元素比要找的数大
就往左走,要是比要找的数小就往下走,直到找到要找的数位置
*/
#include<iostream>
#define row 5
#define col 5
using namespace std;
bool yongmatrix(int array[row][col],int searchkey)
{
int i=0,j=col-1;
int var=array[i][j];
while(true)
{
if(var==searchkey)
return true;
else if(var<searchkey&&i<row-1)
var=array[i++][j];
else if(var>searchkey&&j>0)
var=array[i][j--];
else
return false;
}
}
int main()
{
int array[row][col],i,j,reachkey;
cin>>reachkey;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
cin>>array[i][j];
cout<<yongmatrix(array,reachkey)<<endl;
return 0;
}