c语言程序设计习题之二维数组中的查找。c++算法练习题实例源码介绍:
c++面试题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一行都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
举例
习题分析:总结上面的过程中,可以发现:首先读取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数所在的行,也就是说如果要查找的数字步骤数组的右上角,则每次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。
c++二维数组中的查找练习代码:
#include <iostream>
using namespace std;
const int MAXLEN = 10;
/*arr[x][y]比num大,删除本列;arr[x][y]比num小,删除本行*/
bool Find(int arr[MAXLEN][MAXLEN],int num,int x,int y,int nLen)
{
if (x > nLen – 1 || y < 0)
{
return false;
}
if (arr[x][y] == num)
{
cout<<”x = “<<x<<” y = “<<y<<endl;
return true;
}
else if (arr[x][y] > num)
{
return Find(arr,num,x,y – 1,nLen);
}
else
{
return Find(arr,num,x + 1,y,nLen);
}
}
int main()
{
int nLen = 0;
int num = 0;
int arr[MAXLEN][MAXLEN] = {0};
cin>>nLen;//数组维度
cin>>num; //待查找的数
for (int i = 0;i < nLen;i++)//输入二维数组
{
for (int j = 0;j < nLen;j++)
{
cin>>arr[i][j];
}
}
bool bIsfind = Find(arr,num,0,nLen – 1,nLen);
if (bIsfind)
{
cout<<”isFind!”<<endl;
}
else
{
cout<<”Not Find!”<<endl;
}
system(“pause”);
return 1;
}
代码