做网站侵权吗,营销型网站翻译,浏览器73qcc,为什么网站上传都上传不成功1. 题目描述——杨氏矩阵 有一个数字矩阵#xff0c;矩阵的每行从左到右是递增的#xff0c;矩阵从上到下是递增的#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求#xff1a;时间复杂度小于O(N); 2. 思路 3. 代码实现1
#includestdio.hvoid fin…1. 题目描述——杨氏矩阵 有一个数字矩阵矩阵的每行从左到右是递增的矩阵从上到下是递增的请编写程序在这样的矩阵中查找某个数字是否存在。 要求时间复杂度小于O(N); 2. 思路 3. 代码实现1
#includestdio.hvoid find_k(int arr[3][3], int row, int col, int k)
{int x 0;int y col-1;int flag 0;while(x row - 1 y 0) //行一直增加但是最大是2列一直减少但是最小是0如果超过这个范围就超出数组范围了{if (k arr[x][y]){x;}else if (k arr[x][y]){y--;}else{printf(找到了,下标是%d,%d\n,x,y);flag 1;break;}}if(flag0)printf(没找到\n);
}int main()
{int arr[3][3] { 1,2,3,4,5,6,7,8,9 };int k 7;find_k(arr, 3, 3,k);return 0;
}4. 代码实现2 在代码实现1的基础上进行改进我们把找到元素的下标也返回出来 这里涉及到我们的函数只有一个返回值所以我们使用指针来把我们的下标带回来 #includestdio.hint find_k(int arr[3][3], int *row, int *col, int k)
{int x 0;int y *col - 1;while (x *row - 1 y 0) //行一直增加但是最大是2列一直减少但是最小是0如果超过这个范围就超出数组范围了{if (k arr[x][y]){x;}else if (k arr[x][y]){y--;}else{*row x;*col y;return 1;}}return 0;
}int main()
{int arr[3][3] { 1,2,3,4,5,6,7,8,9 };int k 7;int row 3;int col 3;int ret find_k(arr, row, col, k);if (ret 0){printf(找不到\n);}else{printf(找到了数组下标为%d,%d, row, col);}return 0;
}