杨氏矩阵思路详解(C语言)

什么是杨氏矩阵
杨氏矩阵是从左到右,从上到下数字递增的一个矩阵
例如:
1 2 3
4 5 6
7 8 9
但不是说,第一行比第二行的数字要大,第三行数字要比第二行数字要大,例如下面的情况
例如:
1 2 3
2 4 5
4 5 6

思路
在杨氏矩阵中,查找某个数字,我们一般可以对比查找,那开始对比的数字怎么寻找呢?
首先可以找右上角或者左下角这两种情况,具体举例用右上角。
为什么找的是这两个数字?
原因:
1 2 3
2 4 5
4 5 6
看这个矩阵,右上角的3是一行中最大的,一列中最小的,和它进行对比。
要找的数字比它大,向下继续寻找(y不变,x- -)
要找的数字比它小,向左继续寻找(x不变,y- -)

为什么不是左上角,右下角的数字呢?
因为左上角的数字比要找的任何数字都要小,除了它本身以外,再去找一个其他的数字与左上角的数字对比,没有什么意义,反而会浪费电脑操作的时间,右下角同理。

实现函数

int Findnum(int arr[3][3], int k, int row, int col)
{
   
	int x = 0;
	int y = col - 1;//找右上角进行对比

	while (x <= row - 1 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值