杨氏矩阵(C语言)

文章目录

    • 问题
    • 技术名词解释
    • 思路
    • 关键代码
    • 运行代码

问题

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

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

技术名词解释

杨氏矩阵: 矩阵的每行从左到右是递增的,每列从上到下是递增的。是对组合表示理论和舒伯特演算很有用的工具。它提供了一种方便的方式来描述对称和一般线性群的群表示,并研究它们的性质。杨氏矩阵是剑桥大学大学数学家阿尔弗雷德·扬在1900年提出。然后在1903年,它被用于格奥尔格·弗罗贝纽斯的对称群研究中。它的理论得益于许多数学家的贡献得到进一步发展,包括珀西·麦克马洪,W.V.D.霍奇,G.deB.罗宾逊,吉安·卡咯罗塔,阿兰拉斯克斯,马塞尔·保罗斯库森博格和理查德·P·史丹利。


思路

定义一个二维数组arr[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}。


关键代码

1、如果第一次输入不相等,则通过while循环找到所在下标,条件肯定包括a!=arr[i][col-1]、i<row和col>=0。

    int a = 0;
    printf("请输入你想找的数:");
    scanf("%d", &a);
    int i = 0, count = 1;
    while (a != arr[i][col - 1] && i < row && col >= 0)
    {
        if (a < arr[i][col - 1])
        {
            col--;
            count++;
        }
        else
        {
            count++;
            i++;
        }
    }


2、第一次相等或者通过while循环之后通过if实现下标、比较次数和是否找到的打印。

    if (a == arr[i][col - 1])
    {
        printf("下标为(%d,%d)\n", i, col - 1);
        printf("比较了%d次\n", count);
        return 1;
    }
    else
    {
        printf("比较了%d次\n", count);
        return 0;
    }

运行代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>int Young_tableau(int arr[4][4], int row, int col)
{printf("****************\n");Sleep(100);printf("****寻找开始****\n");Sleep(100);printf("****************\n");Sleep(100);int a = 0;printf("请输入你想找的数:");scanf("%d", &a);int i = 0, count = 1;while (a != arr[i][col - 1] && i < row && col >= 0){if (a < arr[i][col - 1]){col--;count++;}else{count++;i++;}}if (a == arr[i][col - 1]){printf("下标为(%d,%d)\n", i, col - 1);printf("比较了%d次\n", count);return 1;}else{printf("比较了%d次\n", count);return 0;}
}
int main()
{int arr[4][4] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };int row = 4, col = 4;int ret=Young_tableau(arr, row, col);if (ret == 1){printf("找到了\n");}else{printf("找不到了\n");}return 0;
}

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

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

相关文章

自动化测试框架Robot Framework入门

什么是RF RF是一个基于 Python 的、可扩展的关键字驱动的自动化 验收测试框架、验收测试驱动开发 &#xff08;ATDD&#xff09;、 行为驱动开发 &#xff08;BDD&#xff09; 和机器人流程自动化 &#xff08;RPA&#xff09;。它 可用于分布式、异构环境&#xff0c;其中自动…

Spring Security——04,认证_校验

认证_校验 一、认证过滤器二、配置过滤器三、测试过滤器3.1 登录接口3.2 非登录接口3.3 结果 一键三连有没有捏~~ 一、认证过滤器 创建一个filter包&#xff0c;创建一个过滤器 代码如下&#xff1a; Component public class JwtAuthenticationTokenFilter extends OncePerR…

LeetCode | 数组 | 双指针法 | 27. 移除元素【C++】

题目链接 1. 题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑…

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改

在集群中使用deepspeed如果端口被占用可以使用deepspeed参数更改 这一次G老师不好使了 在集群中使用deepspeed默认的端口号29500被占用&#xff0c;显示更改居然不起作用 G老师给的方法也不好使 #!/bin/bash MASTER_ADDRlocalhost MASTER_PORT29501 # 选择一个未被占用的端…

Android+OnnxRuntime+Opencv+Onnx模型操作图片擦除多余内容

今年来AI的发展非常迅速,在工业、医疗等等行业逐渐出现相应的解决方案,AI也逐渐成为各行业基础设施建设重要的一环,未来发展的大趋势,不过这也需要一个漫长的过程,需要很多技术型人才加入其中,除了工业设施的基础建设,在娱乐方向也有很多有趣的能力,不如图片/视频换背景…

mysql 运算符 语句 字符集 校队集

mysql 运算符 使用select语句可以输出运算的结果 mysql标识符不区分大小写 算数运算符 1./除法 得到的结果是一个小数 %是整数,省略小数 2、除以0不会报错,得到的结果是 null 3.数宇和字符串做加法运算,并不会拼接 比较运算符 1.mysql里面的=是比较运算符,而不是赋值运算…

lora pingpang系统 4

1 深入了解LoRa技术原理 1.1 LoRa扩频通信原理 1.1.1 模拟无线通信&#xff1a; 模拟无线通信是一种使用模拟信号传输数据的通信方式。这种通信方式已经被数字无线通信所取代&#xff0c;因为数字通信具有更高的效率和可靠性。 天线&#xff1a;从空中接收到的无线电波转换成…

数据结构——图的概念,图的存储结构,图的遍历(dfs,bfs)

目录 1.图的定义和术语 2.案例引入 1.六度空间理论 3.图的类型定义 4.图的存储结构 1.邻接矩阵 1.无向图的邻接矩阵表示法 2.有向图的邻接矩阵表示法 3.网&#xff08;有权图&#xff09;的邻接矩阵表示法 代码示例&#xff1a; 2.采用邻接矩阵表示法创建无向图…

每天学习一个Linux命令之mount

每天学习一个Linux命令之mount 在Linux系统中&#xff0c;mount命令是一个非常有用的命令&#xff0c;用于将文件系统挂载到特定的挂载点。本篇博客将详细介绍mount命令的用法以及常用选项。 语法 使用mount命令的基本语法如下&#xff1a; mount [选项] <设备或文件系统…

MySQL 表的增删改查

文章目录 一、什么是CRUD&#xff1f;二、新增&#xff08;Create&#xff09;1、单行数据 全列插入2、多行数据 指定列插入3、插入特殊类型 三、查询&#xff08;Retrieve&#xff09;1、全列查询2、指定列查询3、表达式查询4、指定别名5、去重6、排序7、条件查询基本查询&a…

java算法day44 | ● 完全背包 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

完全背包理论基础 完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 体现在代码中就是对背包的遍历顺序不同。01背包是逆序遍历背包&#xff0c;完全背包是顺序遍历背包。 518. 零钱兑换 II class Solution {public int change(int amount, int[] coin…

微信小程序登录流程

文章目录 1. 用户触发登录操作2. 获取临时登录凭证3. 发送登录凭证到服务器4. 后端使用 code 获取 session_key 和 openid5. 后端保存 session_key 和 openid 返回token6. 前端保存登录态 1. 用户触发登录操作 用户在小程序内部点击登录按钮或进行需要登录权限的操作&#xff…

IMAP的要点:旅行前需要了解的内容

你是否经常因会议而出差&#xff0c;需要在各种设备上灵活地访问你的电子邮件&#xff1f;如果是的话&#xff0c;你可能会想了解你的电子邮件系统是如何通过使用互联网消息访问协议&#xff08;IMAP&#xff09;来工作的&#xff0c;这样当你不在办公桌前时&#xff0c;你可以…

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …

SpringCloud - 如何本地调试不会注册到线上环境(Nacos)?

问题描述 有时候我们需要本地调试注册到 Nacos 上&#xff0c;但是会影响线上服务的 Feign 请求打到本地导致不通影响了线上业务。 原因分析 一般最传统的解决方案就是修改本地 bootstrap.yml 的 spring.cloud.nacos.discovery.namespace spring:application:name: app-serv…

linux的权限操作

笔试见到有两回了&#xff0c;linux指令来做修改目录或者文件权限&#xff1a; chmod urwx, grwx, orwx filename 改命令说明对filename文件&#xff0c; 赋予user、group、other均有read、write、excute的权限代表增加权限&#xff0c;-代表去掉权限&#xff0c;代表定权限 在…

课时85:流程控制_函数基础_基础知识

2.1.1 基础知识 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 场景需求 在shell脚本的编写过程中&#xff0c;我们经常会遇到一些功能代码场景&#xff1a;多条命令组合在一起&#xff0c;实现一个特定的功能场景逻辑、一些命令在脚本内部…

jvisualvm 使用教程

之前看过 jvisualvm&#xff0c;但是那个时候对 JVM 并不是很熟悉&#xff0c;后面看了下八股文&#xff0c;看了下 JVM 的相关知识之后&#xff0c;发现多了解点 JVM 的东西&#xff0c;对我们 CRUD 其实是有指导意义的&#xff0c;就比如我们通常会 new 一堆的没有用到的对象…

opencv-python库 cv2逐帧读取视频cv2.VideoCapture()

cv2.VideoCapture 是 OpenCV&#xff08;cv2&#xff09;库中的一个类&#xff0c;用于捕获摄像头视频或读取视频文件。以下是 cv2.VideoCapture 的详细用法&#xff1a; 连接摄像头或读取视频文件 创建 VideoCapture 对象&#xff1a;使用 cv2.VideoCapture() 函数创建一个 Vi…

使用 Spring Email 和 Thymeleaf 技术,向新注册用户发送激活邮件(二)

本篇博客对应“2.2 开发注册功能”小结 对应视频: 开发注册功能 开发注册功能-续 注册功能是相对比较复制的功能&#xff0c;对于一个相对复杂的功能&#xff0c;可以把这个功能进行拆解。把这个功能的流程想清楚&#xff0c;就知道怎么拆解了&#xff1a; 也可以按照请求进行…