1、杨氏矩阵
题目:有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在
一般方法:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define Col 4
int Yang(int arr[][Col], int val)
{
int i = 0;
int j = Col - 1;
int tmp = arr[i][j];//找到左上角的数
while (1)
{
if (tmp == val)
{
return 1;
}
else if (tmp<val && j >= 0)//小于要找的数,在下一行寻找
{
tmp = arr[++i][j];
}
else if (tmp>val && j >= 0)//大于要找的数,从该列向前找
{
tmp = arr[i][--j];
}
else
return 0;
}
}
int main()
{
int i, j;
int a;
int arr[4][Col] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 5, 6, 7, 8, 9 };
printf("数组为:\n");
for (i = 0; i < 4; i++)