• _jobdu_1384:二维数组中的查找


     1 /************************************************************************/
     2 /* 题目描述:
     3 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
     4 输入:
     5 输入可能包含多个测试样例,对于每个测试案例,
     6 输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数。
     7 输入的第二行包括一个整数t(1<=t<=1000000):代表要查找的数字。
     8 接下来的m行,每行有n个数,代表题目所给出的m行n列的矩阵(矩阵如题目描述所示,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
     9 输出:
    10 对应每个测试案例,
    11 输出”Yes”代表在二维数组中找到了数字t。
    12 输出”No”代表在二维数组中没有找到数字t。
    13 样例输入:
    14 3 3
    15 5
    16 1 2 3
    17 4 5 6
    18 7 8 9
    19 3 3
    20 1
    21 2 3 4
    22 5 6 7
    23 8 9 10
    24 3 3
    25 12
    26 2 3 4
    27 5 6 7
    28 8 9 10
    29 样例输出:
    30 Yes
    31 No
    32 No                                                                     */
    33 /************************************************************************/
    34 
    35 /************************************************************************/
    36 /* Accomplished by Array                                                */
    37 /************************************************************************/
    38 //#include<stdio.h>
    39 //double  gArr[1000][1000];
    40 //int main()
    41 //{
    42 //    int m,n,t,i,j;
    43 //    while(scanf("%d %d", &m, &n) != EOF)
    44 //    {
    45 //        scanf("%d", &t);
    46 //        for( i = 0; i<m; i++)
    47 //            for( j = 0; j<n; j++)
    48 //                scanf("%lf", &gArr[i][j]);
    49 //        i = 0;
    50 //        j -- ;
    51 //        while(i<m&&j>=0)
    52 //        {
    53 //            if(gArr[i][j] == t)break;
    54 //            else if(gArr[i][j]<t)i++;
    55 //            else if(gArr[i][j]>t)j--;
    56 //        }
    57 //        if(i<m&&j>=0)printf("Yes
    ");
    58 //        else printf("No
    ");
    59 //        m = n = t = i = j = 0;
    60 //    }
    61 //    return 0;
    62 //}
    63 
    64 /************************************************************************/
    65 /* Accomplished by Point                                                */
    66 /************************************************************************/
    67 
    68 #include<stdio.h>
    69 int main()
    70 {
    71     double * pArr = NULL;
    72     double * pWork = NULL;
    73     int m,n,t,i,j;
    74     while(scanf("%d %d", &m, &n) != EOF)
    75     {
    76         scanf("%d", &t);
    77         pArr = new double[m*n];
    78         for( i = 0; i<m*n; i++)
    79             scanf("%lf", &pArr[i]);
    80         i = 0;
    81         j = n-1;
    82         while(i<m&&j>=0)
    83         {
    84             if(pArr[i*n + j] == t)break;
    85             else if(pArr[i*n + j]<t)i++;
    86             else if(pArr[i*n + j]>t)j--;
    87         }
    88         if(i<m&&j>=0)printf("Yes
    ");
    89         else printf("No
    ");
    90         m = n = t = i = j = 0;
    91         delete [] pArr;
    92     }
    93     return 0;
    94 }
  • 相关阅读:
    121. 122. 123. 188. Best Time to Buy and Sell Stock *HARD* 309. Best Time to Buy and Sell Stock with Cooldown -- 买卖股票
    from __future__ import absolute_import
    sql之left join、right join、inner join的区别
    Eclipse workspace 被占用问题
    JavaScript SetInterval与setTimeout使用方法详解
    提示框3秒钟后自动消失
    页面加载及取消加载
    分层总结
    java中的注释
    canvas画图
  • 原文地址:https://www.cnblogs.com/suanec/p/4556861.html
Copyright © 2020-2023  润新知