zoukankan      html  css  js  c++  java
  • 2--判断该数组中是否存在这个整数

      1 #include <stdio.h>
      2 
      3 /*
      4 题目:在二维数组中,每一行从左到右,递增;
      5 每一列从上到下递增。完成一个函数。
      6 输入一个二维数组和一个整数,判断该数组中是否存在这个整数。
      7 
      8 测试数据
      9     1    2    8    9
     10     2    4    9     12
     11     4    7    10    13
     12     6    8    11    15
     13 查找 7 是否存在其中。
     14 
     15 解题思路:
     16     从右上顶点开始于判断,与数字7做对比,看是否与7相同。如果相同就是在其中。
     17 如果不在,判断该数字是否大于要查找数字7,如果大于就证明可以去掉9所在的数字那一列。
     18 因为,数组符合水平向右不断增大,垂直向下不断增加。如果小于查找数字7,就可以舍弃水平哪一行。
     19 根据这个规则,循环查找,直到结束。
     20 --------------------
     21 第一次查找后:9 》7舍弃列
     22     1    2    8    
     23     2    4    9     
     24     4    7    10    
     25     6    8    11    
     26 
     27 --------------------
     28 
     29 --------------------
     30 第二次查找后:8 》7舍弃列
     31     1    2        
     32     2    4         
     33     4    7        
     34     6    8        
     35 
     36 --------------------
     37 --------------------
     38 第三次查找后:2 《 7 舍弃行
     39 
     40     2    4         
     41     4    7        
     42     6    8        
     43 
     44 --------------------
     45 --------------------
     46 第4次查找后:4 《 7 舍弃行
     47     
     48     4    7        
     49     6    8        
     50 
     51 --------------------
     52 --------------------
     53 第5次查找后: 7 = 7  存在
     54     
     55     4    7        
     56     6    8        
     57 
     58 --------------------
     59 
     60 */
     61 
     62 /*
     63 时间:2015-6-27
     64 name:hugo
     65 e-mail: hgonlywj@gmail.com
     66 
     67 函数功能:查找有序二维数组的元素,
     68 
     69 */
     70 
     71 int findNumFun(int *matrix, int findNum, int rows, int columns)
     72 {
     73 
     74     if (rows < 0 || columns < 0 || matrix == NULL)
     75     {
     76         return -1;
     77     }
     78 
     79     int column = columns - 1;
     80     int row = 0;
     81 
     82 
     83     while (row < rows && column > 0)
     84     {
     85         if (findNum == matrix[row * columns + column])
     86         {
     87             printf("row : %d, column: %d.
    ", row, column);
     88             return 1;
     89         }
     90         else if (findNum > matrix[row * columns + column])
     91         {
     92             row++;
     93         }
     94         else
     95         {
     96             column--;
     97         }
     98 
     99     }
    100     
    101 
    102     return 0;
    103 }
    104 
    105 
    106 int main() 
    107 {
    108     printf("FIndInPartiallySortedMatrix.c
    ");
    109 
    110     int testArray[] = {1,2,8,9,2,4,9,12,4,7,10,12,6,8,11,15};
    111 
    112     int findNum = 10;
    113 
    114     findNumFun(testArray, findNum, 4, 4);
    115 
    116 
    117     return 0;
    118 }
  • 相关阅读:
    《ACM国际大学生程序设计竞赛题解I》——6.8
    数据结构篇
    从SG函数浅谈解决博弈问题的通法
    动态规划的泛式解题思路
    bzoj1057: [ZJOI2007]棋盘制作
    bzoj3884: 上帝与集合的正确用法
    bzoj1564: [NOI2009]二叉查找树
    bzoj4347: [POI2016]Nim z utrudnieniem
    bzoj1131: [POI2008]Sta
    bzoj1566: [NOI2009]管道取珠
  • 原文地址:https://www.cnblogs.com/hgonlywj/p/4842535.html
Copyright © 2011-2022 走看看