最简单的方法是用二分法!我用的就是二分法。
把二维数组转化为一维数组,唯一的难点就是表示数组的行列下标。屏幕前的你忘记点赞啦!
C:
#includeint main(){ int i,j,m,n,target; scanf("%d%d%d",&m,&n,&target); int a[m][n]; for(i=0;i target){ high=mid-1; }else{ low=mid+1; } if(low>high) printf("false"); } }
C++:
#includeusing namespace std; int main(){ int i,j,m,n,target; cin>>m>>n>>target; int a[m][n]; for(i=0;i >a[i][j]; } } int low=0,high=m*n-1; while(low<=high){ int mid=low+(high-low)/2; int x=a[mid/n][mid%n];//该题的主要难点!表示行列。 if(x==target){ cout<<"true"< target){ high=mid-1; }else{ low=mid+1; } if(low>high) cout<<"false"<



