1、问题理解
在一个每行从左到右是递增的,每列从上到下也是递增的数列(如下数组)中,找一个数字是否存在。
2、代码实现
代码思路: 因为数列是从左到右是递增的,每列从上到下是递增的,先设置一个数与右上角的数比较若等于打印“找到了";若小于,行加1,再比较,若大于列减1。再循环,若超出最大行数和列数。则打印没找到。
#include<stdio.h>
int find(int arr[3][3], int num)
{
int i = 0;
int j = 0;
for (i = 0; i < 3; i++)
{
if (num == arr[i][j])
{
return 1;
}
else if (num < arr[i][0])
{
;
}
else
{
j++;
}
}
return 0;
}
int main()
{
int arr[3][3] = { {1,4,5},{2,3,6},{3,5,8} };
int num = 0;
scanf("%d", &num);//输入一个要查找的数
int ret=find(arr,num);
if (ret == 1)
printf("找到了");
else
printf("没找到");
return 0;
}