在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数
2016-05-10 23:12
736 查看
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数
分析如下图(也是测试用例):上面例子:row = 4;col = 5;
IsExitNum()函数:值num在arr[4][5]中是否存在;
代码如下:
</pre><pre name="code" class="cpp"><span style="font-size:18px;">#include<iostream> using namespace std; bool IsExitNum(int arr[][5], int row,int col, int num) { bool find = false; if (arr == NULL || (row < 0 && col < 0)) { return find; } int _row = 0; int _col = col-1; while (_row < row && _col >= 0) { if (arr[_row][_col] > num) { --_col; } else if (arr[_row][_col] < num) { ++_row; } else { find = true; return find; } } return find; } //测试用例:1.9,exit; // 2.8,no exit; //左上角 3.0, exit; //右下角 4.29,exit; //左下角 5.12,exit; int main() { int arr[4][5] = { { 0, 3, 7, 9, 13 }, { 2, 5, 11, 13, 17 }, { 9, 14, 15, 19, 21 }, { 12, 18, 20, 25, 29 } }; bool ret = IsExitNum(arr, 4, 5, 9); if (ret) { cout << "9 exit" << endl; } else { cout << "9 no exit" << endl; } ret = IsExitNum(arr, 4, 5, 8); if (ret) { cout << "8 exit" << endl; } else { cout << "8 no exit" << endl; } ret = IsExitNum(arr, 4, 5, 0); if (ret) { cout << "0 exit" << endl; } else { cout << "0 no exit" << endl; } ret = IsExitNum(arr, 4, 5, 29); if (ret) { cout << "29 exit" << endl; } else { cout << "29 no exit" << endl; } ret = IsExitNum(arr, 4, 5, 12); if (ret) { cout << "12 exit" << endl; } else { cout << "12 no exit" << endl; } return 0; }</span>
结果如下图所示:
相关文章推荐
- php学习,2016-5-10
- 数据结构与算法实践 之 二分查找初识
- Centos7系统语言支持设置
- Retrofit2.0使用详解
- Java中double类型精度丢失问题
- Swift 第一天
- android:descendantFocusability用法简析-ListView与Button、RadioButton焦点冲突问题
- Queue.Queue vs collections.deque
- 三极管原理,开关电路设计原则,NPN、PNP区别及常用三极管参数
- mac版MySQL初始密码或者自己的密码忘了怎么办?
- c++作业5
- UIKIT点击事件中的职责链模式
- 性能优化总结
- jquery基础认知
- 索引基础——B-Tree、B+Tree、红黑树、B*Tree数据结构
- 练习三1007
- ArrayAdapter简单适配器用法Android
- Intent及其属性详解
- WebBasic08-JS
- 深度解析c语言中的关键字