返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言如何实现杨氏矩阵
  • 616
分享到

C语言如何实现杨氏矩阵

2023-07-05 02:07:13 616人浏览 泡泡鱼
摘要

本篇内容主要讲解“C语言如何实现杨氏矩阵”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现杨氏矩阵”吧!题目如下:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编

本篇内容主要讲解“C语言如何实现杨氏矩阵”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现杨氏矩阵”吧!

题目如下:

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

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

题干中所描述的矩阵被称作杨氏矩阵,然后让你在这个这个矩阵中查找一个数字。其实在矩阵中查找一个数字并不难,只需采取遍历的方式,将矩阵中每个元素拿出来比较即可。但这道题还有一个要求就是时间复杂度必须小于O(N),也就是说不能采用遍历的方式来查找。因此我们需要根据杨氏矩阵的特点来写一个新的算法进行查找。

如下图所示,为一个3x3的杨氏矩阵。

C语言如何实现杨氏矩阵

根据题目我们总结一下杨氏矩阵的两个特点:

同一行的元素由左向右依次递增

同一列的元素从上到下依次递增

通过这两点我们会发现这个矩阵有两个元素是特殊元素。

  • 右上角元素3为其所在行最大的元素,为其所在列最小的元素

  • 左下角元素7为其所在行最小的元素,为其所在列最大的元素

因此我们可以采用以下方法:

先拿出右上角的元素3来和所查找的元素比较,如果3比要查找的元素大,那说明该元素绝不可能在第一行,因此我们就可以直接排除一行的元素。如果3比要查找的元素小,那说明该元素绝不可能在最后一列,因此我们就可以直接排除一列的元素

现在假设我们排除了一行的元素,那接下来的矩阵就变成了这样:

C语言如何实现杨氏矩阵

这时6又变成了右上角的元素,然后重复上一步的操作,假设我们这次排除了一列的元素,那接下来的矩阵就变成了这样:

C语言如何实现杨氏矩阵

于是5变成了右上角的元素,继续重复上一步操作,这样每一次查找我们都可以排除一行或者一列的元素,大大的提高了算法效率。

当然上述举例我是以右上角元素为基准的,如果以左下角元素为基准也可以得到相同的结果,大家不妨自己来试一下。

实现代码如下:

#include <stdio.h>int find_num(int arr[3][3], int row, int col, int k){int x = 0;int y = col-1;while (x<row && y>=0){if (arr[x][y] == k){printf("下标为: %d %d\n", x, y);return 1;}else if (arr[x][y] > k)y--;else if (arr[x][y] < k)x++;}return 0;}int main(){int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };int ret = find_num(arr, 3, 3, 7);if (ret == 1)printf("找到了\n");elseprintf("找不到\n");return 0;}

这里我们将查找杨氏矩阵元素的过程封装在一个函数中。函数接收4个参数,分别是二维数组的地址,行数,列数和要查找的元素。通过返回值来判断是否找到。

在函数内部定义一个坐标(x, y)表示右上角元素,当x等于行数是说明已经越界(数组下标是从0开始的),那要查找的元素必然不存在。当列数小于0也一样。

当排除一行的时候,给x的值加1即可;排除一列的时候,给y的值减1即可。

运行结果:

C语言如何实现杨氏矩阵

到此,相信大家对“C语言如何实现杨氏矩阵”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C语言如何实现杨氏矩阵

本文链接: https://lsjlt.com/news/349023.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言如何实现杨氏矩阵
    本篇内容主要讲解“C语言如何实现杨氏矩阵”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现杨氏矩阵”吧!题目如下:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编...
    99+
    2023-07-05
  • C语言杨氏矩阵简单实现方法
    今天来向大家介绍一个用C语言实现杨氏矩阵的问题。题目如下: 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时...
    99+
    2023-02-01
    C语言杨氏矩阵 C语言杨氏矩阵实现
  • C语言杨氏矩阵实例教你编写
    目录一、杨氏矩阵是什么二、编写步骤三、程序的改进四、总结一、杨氏矩阵是什么 一个数字矩阵,矩阵的每一行从左到右一次递增,矩阵从上到下递增,在这样的矩阵中查找一个数字是否存在。时间复杂...
    99+
    2023-02-01
    C语言杨氏矩阵 C语言杨氏矩阵算法
  • C语言中杨氏矩阵与杨辉三角的实现方法
    一、杨氏矩阵 杨氏矩阵 1.杨氏矩阵的概念 在数学中,杨表(英语:Young tableau),又称杨氏矩阵。是对组合表示理论和舒伯特演算很有用的工具。它提供了一种方便的方式来描述...
    99+
    2024-04-02
  • C语言杨氏矩阵查找算法实例讲解
    目录一、杨氏矩阵介绍二、查找算法1.查找思路2.步骤3.代码三、杨氏矩阵例题代码特别注意四、总结本文以C语言实现,介绍杨氏矩阵中通用的查找算法。 一、杨氏矩阵介绍 杨氏矩阵种,每一行...
    99+
    2024-04-02
  • 怎么在C语言中实现一个杨氏矩阵与杨辉三角
    这篇文章将为大家详细讲解有关怎么在C语言中实现一个杨氏矩阵与杨辉三角,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层...
    99+
    2023-06-15
  • C语言编程题杨氏矩阵算法快速上手示例详解
    目录题目概要一、解题思路二、具体代码题目概要 有一个数字矩阵,矩阵的每行从左到右都是递增的,矩阵从上到下都是递增的,请编写程序在这样的矩阵中查找某个数字是否存在? 一、解题思路 对于...
    99+
    2024-04-02
  • C语言如何实现矩阵连乘
    本篇内容主要讲解“C语言如何实现矩阵连乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现矩阵连乘”吧!动态规划法题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是...
    99+
    2023-06-16
  • R语言实现导出矩阵
    程序实在是调不出来了,我决定破釜沉舟,直接把所有表格都打印出来,看看数据到底哪儿有问题。 然后就开始了闹心的矩阵导出。。。 首先,百度了一下,数据导出的代码为: write.ta...
    99+
    2024-04-02
  • C语言实现矩阵运算案例详解
    C语言实现矩阵运算 给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整...
    99+
    2024-04-02
  • C语言如何实现打印杨辉三角
    这篇文章给大家分享的是有关C语言如何实现打印杨辉三角的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。题目描述打印杨辉三角(前N行)问题分析杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在...
    99+
    2023-06-22
  • R语言 实现矩阵相乘100次
    【D1 D2】2*1 【T1 T2】1*2 要求D1和D2随机的变动, 矩阵相乘100次 rm(list=ls()) gc() options(scipen = 2000) ##...
    99+
    2024-04-02
  • C语言中如何求两个矩阵的乘积
    这篇文章将为大家详细讲解有关C语言中如何求两个矩阵的乘积,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分析在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数...
    99+
    2023-06-25
  • R语言创建矩阵的实现方法
    矩阵 向量vector用于描述一维数据,是R语言中最基础的数据结构形式 矩阵matrix可以描述二维数据,和向量相似,其内部元素可以是实数、复数、字符、逻辑型数据 矩阵...
    99+
    2024-04-02
  • c语言如何判断两个矩阵是否相等
    这篇文章主要介绍了c语言如何判断两个矩阵是否相等的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇c语言如何判断两个矩阵是否相等文章都会有所收获,下面我们一起来看看吧。代码如下:#include<stdio....
    99+
    2023-06-17
  • C++如何实现转置矩阵的循环
    这篇文章主要介绍了C++如何实现转置矩阵的循环,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩...
    99+
    2023-06-22
  • 如何使用R语言导出矩阵
    今天就跟大家聊聊有关如何使用R语言导出矩阵,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据导出的代码为:write.table (x, file =&...
    99+
    2023-06-14
  • C语言求逆矩阵案例详解
    一般求逆矩阵的方法有两种,伴随阵法和初等变换法。但是这两种方法都不太适合编程。伴随阵法的计算量大,初等变换法又难以编程实现。 适合编程的求逆矩阵的方法如下: 对可逆矩阵A...
    99+
    2024-04-02
  • R语言-如何将循环所得的矩阵组成一个矩阵
    在矩阵合并中,常见的方法有cbind()和rbind() 其中,前者为按列合并,后者为按行合并。 但是这两个函数有个缺点,就是不能应用到循环之中。例如: A<-matrix...
    99+
    2024-04-02
  • python共现矩阵如何实现
    什么是共现矩阵比如我们有两句话:ls = ['我永远喜欢三上悠亚', '三上悠亚又出新作了']在jieba分词下我们可以得到如下效果:我们就可以构建一个以关键词的共现矩阵:['', &#...
    99+
    2023-05-14
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作