杨氏矩阵一般来说都是n*n的矩阵,是从左到右,从上到下递增的。
所以我们要判断是否存在自己想要的数呢?
那么看看我自己写的一个小代码:
#include<stdio.h>
int search(int arr[3][3],int key,int size)
{
int i;
for(i=0; i<size; i++)
{
if(arr[i][i] == key)
{
return 1;
}
else if(arr[i][i]>key)
{
int x = 0;
for(x=1; x<i; x++)
{
if(arr[i-x][i]==key)
{
return 1;
}
if(arr[i][i-x]==key)
{
return 1;
}
}
}
}
return 0;
}
int main()
{
int accpet = 0;
int arr[4][3] = {{1,2,3},{2,3,4},{3,4,5}};
int key;
int size = sizeof(arr)/sizeof(arr[0]);
printf("请输入要查找的数\n");
scanf("%d",&key);
accpet = search(arr,key,size);
if(accpet == 1)
{
printf("数字仔数组中存在\n");
}
else
{
printf("数字在数组中不存在\n");
}
return 0;
}
想法是以矩阵的左上角到右下角的对角线为与key的判断,只要key小于了对角线上的某个位置,那么key坑定在那个位置的左一排或者竖着的一排。。。
咱们来看结果