数据结构与算法分析 c++11 题2.27 找K是否在N*N 矩阵中

来源:互联网 发布:mac 查看所有进程 编辑:程序博客网 时间:2024/06/05 09:09

题目:

 输入是一个N*N的数字矩阵并且已读入内存,每一行均从左到右递增,每一列从上到下递增,给出一个算法决定数m是否在该矩阵中


解析:从矩阵的右上角的元素开始,若m小于此元素,则向左移动到下一个元素,若m大于此元素,则向下移动,直到寻找到此元素。

#include <iostream>#include <vector>using namespace std;template<typename T, typename F>int searchWord(T arr,F aim){bool find = false;size_t row = 0;size_t column = arr.size() - 1;while (!find) {if ((row > arr.size() - 1) || (column < 0))return false;if (aim > arr[row][column]) {row++;}else if (aim < arr[row][column]) {column--;}else {find = true;}}//cout << "location:  arr[" << row << "][" << column << "]" << endl;return find;}int main(){vector<vector<int>> vec = { {1,2,3,4,5,6},    {2,3,4,5,6,7},    {3,4,5,6,7,8},    {4,5,6,7,8,9},    {5,6,7,8,9,10},    {6,7,8,9,10,11}  };cout << vec.size() << "   "<<vec[0].size()<< endl;cout << "find K true or false :  " << searchWord(vec,10) << endl;}




0 0
原创粉丝点击