呼和浩特网站建设小程序,怎么做科技小制作视频网站,网页搜索记录怎么恢复,wordpress产品页面静态化#x1f525;博客主页#x1f525;#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞#x1f44d;评论✍收藏⭐ 题目#xff1a;杨氏矩阵 有一个数字矩阵#xff0c;矩阵的每行从左到右是递增的#xff0c;矩阵从上到下是递增的#xff0c;请编写程序在这样的矩阵中查找某个… 博客主页【 坊钰_CSDN博客 】 欢迎各位点赞评论✍收藏⭐ 题目杨氏矩阵 有一个数字矩阵矩阵的每行从左到右是递增的矩阵从上到下是递增的请编写程序在这样的矩阵中查找某个数字是否存在 解答 1. 我们仔细分析不难发现对于杨氏矩阵老说右上角和左下角的元素是有特点的。 2. 右上角的元素是一行中最大的一列中最小的。 3. 左下角的元素是一行中最小的是一列中最大的。所以我们可以从右上角或者左下角开始查找。 比如从右上角开始查找的时候右上角的元素比我们要查找元素小我们就可以去掉右上角元素所在的这一行右上角的元素比我们要查找的元素大我们就可以去掉右上角元素所在的这一列。然后依然找右上角的元素继续和要查找的元素与比较。这样每一次比较去掉一行或者去掉一列
代码
#include stdio.hint find(int arr[][3], int x, int y, int key) //第一个参数的类型需要调整
{int i 0, j y - 1; //从右上角开始遍历while (j 0 i x){if (arr[i][j] key) //比我大就向下{i;}else if (arr[i][j] key) //比我小就向左{j--;}else{return 1;}}return 0;
}int main()
{int arr[][3] { {1, 2, 3},{4, 5, 6}, {7, 8, 9} }; //一个示例if (find(arr, 3, 3, 5)){printf(It has been found!\n);}else{printf(It hasnt been found!\n);}return 0;
}