zoukankan      html  css  js  c++  java
  • 二维数组中的查找

    题目1384:二维数组中的查找

    题目描述:

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    思路:设需要查找的数为key,先二分查找最后一列不小于key的数的位置pos,然后二分查找pos行。

     1 #include <stdio.h>
     2 int a[1001][1001];
     3 int n,m;
     4 int binary1(int l,int r,int key,int col)
     5 {
     6     int mid = (l+r)/2;
     7     if(l==r)return l;
     8     if(key<=a[mid][col]) return binary1(l, mid, key,col);
     9     else return binary1(mid+1,r,key,col);
    10 }
    11 int binary2(int l,int r,int key,int row)
    12 {
    13     if(l>r)return -1;
    14     int mid = (l+r)/2;
    15     if(a[row][mid]==key) return mid;
    16     if(key<a[row][mid]) return binary2(l, mid-1, key,row);
    17     else return binary2(mid+1,r,key,row);
    18 }
    19 int main(int argc, const char * argv[])
    20 {
    21     int i,j,key;
    22     while(scanf("%d%d",&n,&m)!=EOF)
    23     {
    24         scanf("%d",&key);
    25         for(i=0;i<n;i++)
    26             for(j=0;j<m;j++)
    27                 scanf("%d",&a[i][j]);
    28         int row = binary1(0, n-1, key,m-1);
    29         int pos = binary2(0, m-1, key,row);
    30         if(pos>=0)printf("Yes
    ");
    31         else printf("No
    ");
    32     }
    33 }
  • 相关阅读:
    English Dictionary site for ODE and OALD
    vmic environment
    makefile
    the diference between include and import
    windows 工具命令 cmd
    python namespace
    shell cmd args
    ROE, ROC
    IP
    链接及常用软件
  • 原文地址:https://www.cnblogs.com/sook/p/3164030.html
Copyright © 2011-2022 走看看