首页 > 其他分享 >【C语言习题】33.杨氏矩阵

【C语言习题】33.杨氏矩阵

时间:2024-07-05 19:29:05浏览次数:22  
标签:arr 右上角 33 元素 矩阵 C语言 int 查找 习题

文章目录


作业标题

杨氏矩阵

作业内容

有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。

要求:时间复杂度小于O(N);


2.解题思路

我们仔细分析,不难发现,对于杨氏矩阵老说,右上角和左下角的元素是有特点的。右上角的元素是一行中最大的,一列中最小的。左下角的元素是一行中最小的,是一列中最大的。所以我们可以从右上角或者左下角开始查找。比如:从右上角开始查找的时候,右上角的元素比我们要查找元素小,我们就可以去掉右上角元素所在的这一行;右上角的元素比我们要查找的元素大,我们就可以去掉右上角元素所在的这一列。然后依然找右上角的元素继续和要查找的元素与比较。这样每一次比较去掉一行或者去掉一列。这个查找效率是高于遍历数组元素的,所以时间复杂度是小于O(N),也满足题目要求。


3.具体代码

void find_k(int arr[3][3], int k, int r, int c)
{
    int x = 0;
    int y = c - 1;//2
    while (x<r && y>=0) {
        if (arr[x][y] < k)
        {
            x++;
        }
        else if (arr[x][y] > k)
        {
            y--;
        }
        else
        {
            printf("找到了,下标是:%d %d\n", x, y);
            return;
        }
    }
    printf("找不到\n");
}

int main()
{
    int arr[3][3] = {1,2,3,4,5,6,7,8,9};
    int k = 3;
    find_k(arr, k, 3, 3);
    return 0;
}

打印:

在这里插入图片描述

标签:arr,右上角,33,元素,矩阵,C语言,int,查找,习题
From: https://blog.csdn.net/hlyd520/article/details/140165488

相关文章

  • 【C语言习题】32.字符串旋转结果
    文章目录作业标题作业内容2.解题思路3.具体代码作业标题字符串旋转结果作业内容写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1=AABCD和s2=BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字......
  • 【LinuxC语言】手撕Http协议之accept_request函数实现(一)
    文章目录前言accept_request函数作用accept_request实现解析方法根据不同方法进行不同操作http服务器响应格式unimplemented函数实现总结前言在计算机网络中,HTTP协议是一种常见的应用层协议,它定义了客户端和服务器之间如何进行数据交换。在这篇文......
  • 从零开始学习嵌入式----C语言“\“字符
    C语言\01932\01\12\09的意思是什么?应该这样看:    所有的ASCII码都可以用"\"加数字(一般是八进制)来表示。而C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。     1)"\"后面如果跟了三位八进制数字就将\ddd作为......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • 字符串习题-金额转换
    金额转换importjava.util.Scanner;publicclass统计金额{/*把数字转换成繁体字,一共7位数,数字前面补零。查表法思想!!!例如:2135↓转繁体字贰壹叁伍↓前面补0零零零贰壹叁伍↓插入单位零佰零拾零万贰壹......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • C语言的简单学习
    C语言是编译型语言,先编译再运行,通常用gcc进行编译,于是安装了Ubuntu操作系统。至于编辑器,VSCode也能用,先sudoaptinstallbuild-essentialgdb,再在VSCode安装C/C++extension,就可以进行开发了。C语言程序都是 .c文件结尾,新建一个hello_world.c 文件#include<stdi......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......