http://blog.csdn.net/sgbfblog/article/details/7745450
http://blog.csdn.net/v_july_v/article/details/7085669
解法一:
从右上向左下扫描,可以用二分法加速
bool matrixSearch(int **a,int row,int col,int k)
{
if(k<a[0][0]||k>a[row-1][col-1]||a==NULL)return false;
int x=0;
int y=col-1;// 从右上角开始
bool res=false;
while(x<row&&y>=0)
{
if(k<a[x][y])y--;
else
if(k>a[x][y])x++;
else{
res=true;break;
}
}
return res;
}
解法二:
用对角线锁定两个元素从而划分出左下和右上两个子矩阵,使k在这两个范围之内,然后可以推断出k在左下和右上的两个子矩阵中,递归求解