杨氏矩阵解法

每日一言

「 人生如逆旅,我亦是行人。 」--临江仙·送钱穆父-苏轼

题目 杨氏矩阵

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

解法思路

法一:暴力解法

在这里插入图片描述
把整个矩阵看成一个二维数组,直接遍历整个数组,寻找数字

代码:

#include<stdio.h>
int main()
{int arr[][5] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 };int i = 0;int j = 0;int n = 0;scanf("%d", &n);for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){if (arr[i][j] == n)break;}if (j < 5){printf("有");break;}}if(j==5)printf("无");return 0;
}

虽然也能达到效果,但是效率堪忧啊

法二:线性解法

在这里插入图片描述
还是这个矩阵,假设我们要找18。
细细品味题目的含义,我们可以这样来找
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结一下刚才的找法

  1. 先从右上角查起
  2. 判断下面的数与要找的数字的大小关系
  3. 如果大于,向左查找。如果小于,继续向下查找
  4. 不断循环2,3过程,直到不能再找

按照上述思路,写成代码

#include<stdio.h>
int main()
{int arr[5][5] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 };int i = 0;int j = 4;int n = 0;scanf("%d", &n);while (i < 5 && j >= 0){if (arr[i][j] == n){break;}else if (arr[i + 1][j] <= n){i++;}else {j--;}}if (i < 5 && j >= 0)printf("有");elseprintf("无");return 0;
}

结语

做这道题时掉进坑里好几次,qwq~

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三字经||无聊数了下三字经的字数

三字经总字数去除标点后1416个 该文章无技术含量&#xff0c;仅三字经原文&#xff0c;学技术的同学可以止步了 三字经&#xff08;原文&#xff09; 【作者】王应麟 【朝代】南宋 人之初&#xff0c;性本善。性相近&#xff0c;习相远。 苟不教&#xff0c;性乃迁。教之道&a…

【SpringBoot】Redission 的使用与介绍

背景&#xff1a; 我想我们用到 Redisson 最多的场景一定是分布式锁&#xff0c;一个基础的分布式锁具有三个特性&#xff1a; 互斥&#xff1a;在分布式高并发的条件下&#xff0c;需要保证&#xff0c;同一时刻只有有一个线程获得锁&#xff0c;这是最基本的一点。 防止死…

基于知识问答的上下文学习中的代码风格11.20

基于知识问答的上下文学习中的代码风格 摘要1 引言2 相关工作3 方法3.1 概述3.2 元函数设计3.3 推理 4 实验4.1 实验设置4.2 实施细节4.3 主要结果 摘要 现有的基于知识的问题分类方法通常依赖于复杂的训练技术和模型框架&#xff0c;在实际应用中存在诸多局限性。最近&#x…

泵类设备常见的5种故障及监测方法

在各种工业领域中&#xff0c;泵是一种关键设备&#xff0c;用于输送液体或气体。然而&#xff0c;泵类设备常常会面临各种故障&#xff0c;这可能导致生产停顿和生产效率下降。为了及时监测并解决这些故障&#xff0c;设备状态监测系统成为一种重要的工具。本文将介绍泵类设备…

静态工具类中注入Bean及引用Nacos配置

目录 1.说明 2.示例 1.说明 在代码开发中&#xff0c;经常会存在调用第三方工具或者其他系统的场景&#xff0c;通常封装成一个工具类供service进行调用&#xff0c;便于后期的维护及代码复用。工具类中的属性及方法都被static修饰&#xff0c;在工具类中不能使用和service中…

Pytorch torch.norm函数详解用法

torch.norm参数定义 torch版本1.6 def norm(input, p"fro", dimNone, keepdimFalse, outNone, dtypeNone)input input (Tensor): the input tensor 输入为tensorp p (int, float, inf, -inf, fro, nuc, optional): the order of norm. Default: froThe following …

零代码编程:用ChatGPT将SRT字幕文件批量转为Word文本文档

一个文件夹中有多个srt视频字幕文件&#xff0c;srt文件里面有很多时间轴&#xff1a; 现在想将其批量转为word文档&#xff0c;去掉里面与字符无关的时间轴&#xff0c;在ChatGPT中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个批量将SRT字幕文件转为…

js 数组中使用 push 报错

文章目录 问题分析 问题 代码如下&#xff0c;但报错如上&#xff0c;请分析上述代码错误原因 let arr [[160, 20], [179, 10], [-170, -20]]; let temp arr.unshift([1,1]); let tt temp.push([0,0])console.log(tt); // 输出新生成的数组分析 这段代码有几个错误&#x…

opencv-形态学处理

通过阈值化分割可以得到二值图&#xff0c;但往往会出现图像中物体形态不完整&#xff0c;变的残缺&#xff0c;可以通过形态学处理&#xff0c;使其变得丰满&#xff0c;或者去除掉多余的像素。常用的形态学处理算法包括&#xff1a;腐蚀&#xff0c;膨胀&#xff0c;开运算&a…

CDN加速在目前网络安全里的重要性

在当今数字化时代&#xff0c;网络已经成为我们生活不可或缺的一部分。然而&#xff0c;随之而来的是网络安全的威胁不断增加&#xff0c;为了应对这一挑战&#xff0c;CDN&#xff08;内容分发网络&#xff09;的应用变得愈发重要。本文将从一个旁观者的角度分析当前的网络安全…

【设计模式】结构型设计模式

结构型设计模式 文章目录 结构型设计模式一、概述二、适配器模式&#xff08;Adapter Pattern&#xff09;2.1 类适配器模式2.2 对象适配器模式2.3 接口适配器模式2.4 小结 三、桥接模式&#xff08;Bridge Pattern&#xff09;四、装饰器模式&#xff08;Decorator Pattern&am…

基于ubuntu20.04安装ros系统搭配使用工业相机

基于ubuntu20.04安装ros系统搭配使用工业相机 1. ROS系统安装部署1.1更新镜像源1.1.1 备份源文件1.1.2 更新阿里源1.1.3 更新软件源 1.2 ros系统安装1.2.1 添加ros软件源1.2.2 添加秘钥1.2.3 更新软件源1.2.4 配置及更换最佳软件源1.2.5 ROS安装1.2.6 初始化rosdep1.2.7 设置环…

datagrip只导出表结构

话不多说&#xff0c;直接上教程。 datagrip版本&#xff1a;2022.3 第一步&#xff0c;连接数据库 第二步&#xff0c;右击数据库&#xff0c;复制即可

【游记】NOIP2023

Day -8 本来以为初中生不能参加NOIP。 老师突然通知&#xff0c;说初中生参加NOIP的分数线定在140分&#xff0c;我可以进NOIP&#xff0c;我开心了 &#x1f603; 于是我又开始备(juan)战(ti)了。 Day -8、-7、-6、-5 晚上9:00-10:00卷题。 卷了一些往年NOIP的水题。。。 Da…

【20年扬大真题】编写对数组求逆的递归算法

【20年扬大真题】 编写对数组求逆的递归算法 void swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void Ni(int arr[],int left,int right) {if (left > right) {return;}swap(&arr[left], &arr[right]);Ni(arr, left 1, right - 1); } int main() {int ar…

将数字每千分位用逗号隔开

// 无小数版本 let format n > {let num n.toString() let len num.lengthif (len < 3) {return num} else {return format(num.slice(0,len-3)),num.slice(len-3)} } let resformat(1232327666663) // 1,232,323 console.log(res)// 有小数版本 let format n > …

C#有关里氏替换原则的经典问题答疑

目录 理解创建类型与变量类型很关键 先来理解变量类型。 再来理解创建类型。 有了正确的理解再来看疑问 里氏替换原则是面向对象七大原则中最重要的原则。 语法表现&#xff1a;父类容器装子类对象。 namespace 里氏替换原则 {class GameObject { } class Player : GameO…

[Vue3] vue-router路由守卫进阶

路由守卫&#xff0c;可以想象为古代御前侍卫&#xff0c;路由守卫&#xff0c;则是对路由进行权限控制 分类&#xff1a;全局守卫、独享守卫、组件内守卫 文章目录 1.全局前置-路由守卫2.全局后置守卫3.独享守卫4.组件内路由守卫5.keep-alive遇见vue-router6.路由器的两种工作…

详解Python安装requests库的实例代码

文章目录 前言基本用法基本的get请求带参数的GET请求解析json关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前…