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

    题目描述:

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

    解法:

     1 #include<stdio.h>
     2 /*
        从矩阵的右上角开始寻找
    */
    3 int Find(int *matrix, int rows, int columns, int number){ //看成一维数组进行查找,会减少查找次数 4 int found = 0; 5 6 if(matrix != NULL && rows > 0 && columns > 0){ 7 int row = 0; 8 int column = columns - 1; 9 while(row < rows && column >= 0){ 10 if(matrix[row * columns + column] == number) //该数字等于要查找的数字,则退出 11 { 12 found = 1; 13 break; 14 } 15 else if (matrix[row * columns + column] > number) //如果没找到且右上角的数字比目标数字大,则列减少 16 --column; 17 else 18 ++ row; //如果没找到且右上角的数字比目标数字小,则行增加 19 } 20 } 21 return found; //每次都找右上角(比较)这样每次都会减少一行或一列的比较 22 } 23 24 int main(){ 25 int Mat[10000]; 26 int rowS, columnS, Target; 27 28 while( scanf("%d%d",&rowS,&columnS) != EOF ){ //格式化输入 29 scanf("%d",&Target); 30 for( int i=0; i<rowS; i++){ 31 for( int j=0; j<columnS; j++){ 32 scanf("%d",&Mat[columnS*i+j]); //针对一维数组进行输入 33 } 34 } 35 if( Find(Mat, rowS, columnS, Target) ){ 36 printf("Yes "); 37 }else{ 38 printf("No "); 39 } 40 } 41 return 0; 42 }
  • 相关阅读:
    我的第一颗二叉链树的笔记
    我的kmp笔记
    链表操作笔记
    POJ 2559 Largest Rectangle in a Histogram (单调栈)
    牛客网 wyh的数列(循环节+快速幂)
    数论知识点
    牛客网 n的约数 (唯一分解定理)
    POJ 3783 Balls (DP)
    关于unordered_map和map
    2018年四校联合周赛-第二场 B.异或和问题(二维树状数组)
  • 原文地址:https://www.cnblogs.com/dormant/p/5299409.html
Copyright © 2011-2022 走看看