本文共 851 字,大约阅读时间需要 2 分钟。
题目:
给一个二维数组每一行的数字是从左到右是递增的,每一列的数字从上到下是递增的,查找一个数是否在这个二维数组中存在存在。#define _CRT_SECURE_NO_WARNINGS#include#include using namespace std;bool Find(int* arr,int rows,int cols,int num){ assert(arr); assert(rows > 0); assert(cols > 0); int row = 0; int col = cols-1; while (row < rows && col >= 0) { if (arr[row*cols + col] == num)//从右上角开始找,如果小了就往左,大了往下找 { return true; } else { if (arr[row*cols + col]>num) { --col; } else { ++row; } } } return false;}void test(){ int arr[][4] = { { 1, 2, 8, 9 }, { 2, 4, 9, 10 }, { 4, 7, 10, 13 }, { 6, 8, 11, 15 } }; int ret=Find((int*)arr, 4, 4, 6); cout << ret;}int main(){ test(); system("pause"); return 0;}
转载地址:http://uqstd.baihongyu.com/