// 二维数组中的查找
// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按
// 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个
// 整数,判断数组中是否含有该整数。 #include <iostream>
using namespace std; bool serach_in(int* matrix, int rows, int cols, int number)
{
bool flag = false; if ((matrix != NULL) && (rows > ) && (cols > ))//判断不能忘
{
int row = , col = cols - ;
while ((row < rows) && (col >= ))
{
if (matrix[row*cols + col] == number)
{
flag = true;
break;
}
else if (matrix[row*cols + col] > number)//用实例分析过程,思想比程序更重要
col--;
else
row++;
}
} return flag;
} void test1()//要查找的数在数组中
{
cout << "Test1:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test2()//要查找的数不在数组中
{
cout << "Test2:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test3()//要查找的数是数组中最小的数字
{
cout << "Test3:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test4()//要查找的数是数组中最大的数字
{
cout << "Test4:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test5()//要查找的数比数组中最小的数字还小
{
cout << "Test5:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test6()//要查找的数比数组中最大的数字还大
{
cout << "Test6:\n";
int matrix[][] = { {, , , }, {, , , }, {, , , }, {, , , } };
bool result;
result = serach_in(matrix[], , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} void test7()//鲁棒性测试,输入空指针
{
cout << "Test6:\n";
bool result;
result = serach_in(NULL, , , );
if (result)
cout << "Yes!\n";
else
cout << "No!\n";
} int main()
{
test1();
test2();
test3();
test4();
test5();
test6();
test7();//重点,鲁棒性测试 system("pause");
}

《剑指offer》第四题(二维数组中的查找)的更多相关文章

  1. 剑指Offer - 九度1384 - 二维数组中的查找

    剑指Offer - 九度1384 - 二维数组中的查找2013-11-23 23:23 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个 ...

  2. 《剑指Offer》面试题-二维数组中的查找

    题目1384:二维数组中的查找 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7318 解决:1418 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到 ...

  3. 剑指offer【01】- 二维数组中的查找(Java)

    在经历了春招各大公司的笔试题和面试官的血虐之后,决定要刷一些算法题了,不然连面试机会都没有. 而应对笔试和面试,比较出名的就是剑指offer的题目和LeetCode的题目了.剑指offer应对面试中的 ...

  4. 剑指offer第二版-4.二维数组中的查找

    面试题4:二维数组中的查找 题目要求: 一个二维数组中,每一行从左到右递增,每一列从上到下递增.输入一个整数,判断数组中是否含有该整数 /** * @since 2019年2月13日 下午5:08:5 ...

  5. 剑指offer面试题3二维数组中的查找

    题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 需要与面试官确认的是,这 ...

  6. 剑指offer面试题4: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  7. 【剑指Offer】1、二维数组中的查找

      题目描述:   在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否 ...

  8. 剑指offer(3)——二维数组中的查找

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

  9. 剑指offer学习读书笔记--二维数组中的查找

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序.请设计一个函数,输入这样的一个二维数组和一个整数,判断数组是否含有这个整数. 1 2 8 9 2 4 9 1 ...

  10. 【剑指Offer】01、二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

随机推荐

  1. XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)

    以下是代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...

  2. js里实现给数字加三位一逗号间隔的两种方法

    方法一: <script  type= "text/javascript"> var   num_s = "1232134456.546 ";ale ...

  3. cmd 笔记(随时补充)

    被一篇破解WIFI的标题文骗到了,所以学习一下CMD的命令 1 查看已经连接的wifi和密码 netsh wlan show profiles 回车 netsh wlan show profiles ...

  4. MFC六大核心机制之三:动态创建

    MFC中很多地方都使用了动态创建技术.动态创建就是在程序运行时创建指定类的对象.例如MFC的单文档程序中,文档模板类的对象就动态创建了框架窗口对象.文档对象和视图对象.动态创建技术对于希望了解MFC底 ...

  5. MacaW Baby Learns Computer

    A - Macaw Baby Learns Computer Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  6. jstat命令查看tomcat进程提示进程没找到(PID not found

    今天遇到了一个小问题,我想用jstat命令查看tomcat进程(PID=24493)的内存使用情况,命令如下:jstat -gc 24493. 然后就报错了,错误提示信息为 24493 not fou ...

  7. Java设计模式应用——组合模式

    组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...

  8. python 文件操作 练习:把一个目录下的所有文件名,打印一下,不要包含后缀名

    #coding=utf-8 import osos.chdir('d:\\test2')file_list=os.listdir('.')print "file_list:",fi ...

  9. c/c++日期时间处理与字符串string转换

    转自:https://www.cnblogs.com/renjiashuo/p/6913668.html 在c/c++实际问题的编程中,我们经常会用到日期与时间的格式,在算法运行中,通常将时间转化为i ...

  10. Idea中Maven仓库配置会自动恢复

    手头有好几个项目,关闭一个项目,打开另一个项目,发现又在重新下载jar包,打开设置一看,maven配置又恢复到了.m2下边.idea配置的maven会自动恢复吗? 答案是否定的,idea的设置有两个, ...