首先我们需要了解什么是杨氏矩阵
如图所示我们现在有一个目标数是9,每次我们都拿右上角这个数跟它比较,如果目标数比右上角的数要大,那证明整一行都不会有目标数,因为右上角的数是这一行最大的数。
那我们能不能将九宫格看作一个i行j列的二维数组呢
int FindNumber(int arr[3][3],int x,int y,int key)
{
int i = 0;
int j = y - 1;
while (i < x && j >= 0)//二维数组范围内
{
if (arr[i][j] < key)
{
i++;//去掉一行
}
else if (arr[i][j] > key)
{
j--;//去掉一列
}
else
{
return 1;
}
}
return 0;
}
int main()
{
int key = 0;
int arr[3][3] = { {1,2,3},{4,5,6},{7,8,9} };
printf("请输入你的目标数:");
scanf("%d", &key);
int answer = FindNumber(arr,3,3,key);//arr数组、行、列、key
if (answer == 1)
{
printf("找到%d了", key);
}
else
{
printf("二维数组中没有%d", key);
}
}
有不懂的请评论区留言,看到秒回复
觉得有帮助请给个赞