在一个二维数组中,每一行都从左到右递增,每一列都从上到下递增,在这样一个数组里查找一个数
来源:互联网 发布:乐乎pt被关了 编辑:程序博客网 时间:2024/05/18 03:49
第一种:
思路:
二维数组是从左到右递增,从上到下递增,row为行数,col为列数,a[row-1][col-1]为最大数,如果剔除这一行,这一列,则最大数为a[row-2][col-2],如果要查找的num大于a[row-2][col-2]并且大于a[row-1][col-1],则在该row-1行和col-1列查找,照这样遍历。
这样太麻烦,效率太低,应当舍弃。
#include<stdio.h>#include<stdlib.h>#include<assert.h>//二维数组传参bool find(int (*a)[7],int M,int num){assert(a);int i=M-1;int j=6;if(num<a[0][0]||num>a[i][6]){return false;}else{while((j>0)&&(i>0)){if(num==a[i][j]){return false;} if(num<a[i][j]&&num<a[i-1][j-1]) { int tmp=0; for(;tmp<j;j++) { if(a[i][tmp]==num) { return true; } } tmp=0; for(;tmp<i;tmp++) { if(a[tmp][j]==num) { return true; } } return false; } else { j--; i--; }}if(i==0){for(int tmp=0;tmp<j;tmp++){if(a[i][tmp]==num){return true;}}return false;}if(j=0){for(int tmp=0;tmp<i;tmp++){if(a[tmp][i]==num){return true;}}return false;}}}int main(){int a[4][7]={{1,2,3,4,5,6,7},{3,4,5,6,7,8,9},{5,7,9,11,13,15,17},{7,9,13,15,17,21,23},};printf("%d\n",find(a,4,1));system("pause");return 0;}
第二种:
思路:实现比较简单,建议采用。
从右上角访问,该数组从左到右递增,从上到下递增,a[0][col-1]和num比较,如果num比a[0][col-1]大,则剔除该行,row--,如果num比a[0][col]小,则剔除该列,col--;缩小查找范围。
左下角访问道理一样。
#include<stdio.h>#include<stdlib.h>bool find(int (*a)[7],int row,int num){int i=0;int col=7;int j=col-1;while(i<row&&j>=0){if(a[i][j]==num){return true;}else if(a[i][j]<num){i++;}else {j--;}}return false;}int main(){int a[4][7]={{1,2,3,4,5,6,7},{3,4,5,6,7,8,9},{5,7,9,11,13,15,17},{7,10,13,15,17,21,23},};printf("%d\n",find(a,4,34));system("pause");return 0;}
本文出自 “liveyoung” 博客,转载请与作者联系!
0 0
- 在一个二维数组中,每一行都从左到右递增,每一列都从上到下递增,在这样一个数组里查找一个数
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 问题描述大概如下:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 牛客刷题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 牛客网剑指offer—题目一在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
- java 剑指offer 第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- poj之旅——3484
- 请实现一个函数,把字符串中的每个空格替换成“%20”。
- 设计一个类,我们只能生成该类的一个实例。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 如何在AIX上安装axis2c
- 在一个二维数组中,每一行都从左到右递增,每一列都从上到下递增,在这样一个数组里查找一个数
- String类
- 信号
- 三角形类雏形2
- SIGCHLD 信号
- sig_atomic_t类型与volatile限定符
- 回调函数与函数指针
- 可重入函数与线程安全
- 在O(1)时间删除链表节点