该题涉及到杨氏矩阵,如果矩阵的每一行每一列都严格递增,则该矩阵就是杨氏矩阵。测试用例保证三方面的输入:
a 矩阵的最小值、最大值、中间某个值
b 比矩阵的最小值小,比最大值打,介于两者之间但不在矩阵中
c 空指针
#include <iostream>
using namespace std;
bool search(int* matrix,int rows,int columns,int number)
{
bool found=false;
if(matrix!=NULL&&rows>0&&columns>0)
{
int row=0;
int column=columns-1;
while(row<rows&&column>=0)
{
if(matrix[row*columns+column]==number)
{
found=true;
break;
}
else if(matrix[row*columns+column]>number)
{
--column;
}
else
++row;
}
}
return found;
}
void main()
{
int a[4][4]={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
bool result=search(*a,4,4,7);//notice parament should be *a not a .
cout<<result<<endl;
}