问题:
如题
分析:
由数组的最右上角开始查找,
1.当最右上角值 < 目标值时,直接令C(行)+1;
2.当新最右上角值 > 目标值时,直接令R(列)-1;
3.相等时,打印存在的位置。
4.打印无该数。
#include<iostream>
using namespace std;
int main()
{
int r,c;
cout<<"请输入二维数组的行列值:";
cin>>r>>c;
int a[r][c];
cout<<"请输入数组值:(数递增)";
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
cin>>a[i][j];
}
}
int target;
cout<<"请输入需要查找的数:";
cin>>target;
int R,C;
R=0;
//以下3行代码为计算二维数组的大小、行数、列数
int size=sizeof(a)/sizeof(a[0][0]);
int size1=sizeof(a)/sizeof(a[0]);
int size2=size/size1;
C=size2-1;
while(R<size1 && C>=0)
{
if(a[R][C] < target)
{
R++;
}
else if(a[R][C] > target)
{
C--;
}
else
{
cout<<"存在于第"<<R+1<<"行"<<C+1<<"列";
return 0;
}
}
cout<<"不存在该数";
return 0;
}