杨氏矩阵(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…

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

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

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.采用邻接矩阵表示法创建无向图…

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…

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…

jvisualvm 使用教程

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

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

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

[每周一更]-第92期:Go项目中的限流算法

这周五在清明假期内&#xff0c;提前更新文章 很多业务会有限流的场景&#xff0c;比如活动秒杀、社区搜索查询、社区留言功能&#xff1b;保护自身系统和下游系统不被巨型流量冲垮等。 在计算机网络中&#xff0c;限流就是控制网络接口发送或接收请求的速率&#xff0c;它可防…

【算法练习】28:选择排序学习笔记

一、选择排序的算法思想 弄懂选择排序算法&#xff0c;先得知道两个概念&#xff1a;未排序序列&#xff0c;已排序序列。 原理&#xff1a;以升序为例&#xff0c;选择排序算法的思想是&#xff0c;先将整个序列当做未排序的序列&#xff0c;以序列的第一个元素开始。然后从左…

K8S - Deployment 的版本回滚

当前状态 先看deployment rootk8s-master:~# kubectl get deploy -o wide --show-labels NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES …

理解pytorch的广播语义

目录 什么是广播运算 广播的条件 示例 示例1 示例2 示例3 补1 示例4 原位运算 示例5 参与广播运算的两个tensor&#xff0c;必须是从右向左对齐 总结规律 两个tensor可以做广播运算的条件&#xff1a; 两个可以互相广播的tensor运算的步骤&#xff1a; 例子&#x…

【深度学习】深度学习md笔记总结第3篇:TensorFlow介绍,学习目标【附代码文档】

深度学习笔记完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;深度学习课程&#xff0c;深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍&#xff0c;2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

整数与浮点数在内存中的存储

整数与浮点数在内存中的存储 一&#xff0c;大小端存储二&#xff0c;整数在内存中的存储三&#xff0c;浮点数在内存中的存储3.1浮点数的存储规则3.2浮点数的存储过程3.2.1有效数字M3.2.2指数E3.2.3浮点数存储的特殊情况4&#xff0c;例题讲解 在C语言的编程中&#xff0c;我们…

分布式系统架构中的相关概念

1.1、衡量网站的性能指标 响应时间&#xff1a;指执行一个请求从开始到最后收到响应数据所花费的总体时间。并发数&#xff1a;指系统同时能处理的请求数量。 并发连接数&#xff1a;指的是客户端向服务器发起请求&#xff0c;并建立了TCP连接。每秒钟服务器连接的总TCP数量请…