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 }
  • 相关阅读:
    【皇甫】☀ 亮眼的颜色
    【皇甫】☀独一无二
    【皇甫】☀唯一
    【皇甫】☀一本好书 你值得浏览
    【皇甫】☀标题自己起 进来看像啥就是啥
    【皇甫】☀说说那些选择器
    【皇甫】☀标题被你吃了
    【皇甫】☀四套写入方案(仅供参考)
    【皇甫】☀内侧小解析---小行动(2)
    【皇甫】☀内侧小解析---小行动(1)
  • 原文地址:https://www.cnblogs.com/dormant/p/5299409.html
Copyright © 2011-2022 走看看