_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 }
原文地址:https://www.cnblogs.com/suanec/p/4556861.html