第一种:

思路:

二维数组是从左到右递增,从上到下递增,row为行数,col为列数,a[row-1][col-1]为最大数,如果剔除这一行,这一列,则最大数为a[row-2][col-2],如果要查找的num大于a[row-2][col-2]并且大于a[row-1][col-1],则在该row-1行和col-1列查找,照这样遍历。

这样太麻烦,效率太低,应当舍弃。

#include
#include
#include
//二维数组传参bool find(int (*a)[7],int M,int num){assert(a);int i=M-1;int j=6;if(num
a[i][6]){return false;}else{while((j>0)&&(i>0)){if(num==a[i][j]){return false;}               if(num

第二种:

思路:实现比较简单,建议采用。

从右上角访问,该数组从左到右递增,从上到下递增,a[0][col-1]和num比较,如果num比a[0][col-1]大,则剔除该行,row--,如果num比a[0][col]小,则剔除该列,col--;缩小查找范围。

左下角访问道理一样。

#include
#include
bool find(int (*a)[7],int row,int num){ int i=0; int col=7; int j=col-1; while(i
=0) { if(a[i][j]==num) { return true; } else if(a[i][j]