【C语言每日一题】杨氏矩阵(源码以及改进源码)

简介: 【C语言每日一题】杨氏矩阵(源码以及改进源码)

💡前言🌞:


大伙们好!😄又到了小陈每日一题的时间了~ 😋😋😋今天也带来了十分有趣的题目!🥰🥰🥰用C语言实现——杨氏矩阵~这个题目很有意思,新颖的同时又很值得思考!我现在迫不及待地要和大家分享~!😄🤗🤗


💛杨氏矩阵题目💛


💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡


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


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


💪 解题思路的分享💪


如果没有时间复杂度小于O(N)的条件,我们就可以用两个循环来遍历数组轻易地解决问题,但是题目给出了要求,我们就另寻出路🤗。

通过观察题目,我们发现,在杨氏矩阵里,矩阵的每行从左到右是递增的,所以右上角的元素是一行中最大,一列中最小,而左下角的元素是一行中最小,一列中最大。

知道这个信息之后,我们就可以从右上角或者左下角来查找。

从右上角开始查找时,如果所查找的数字大于右上角的元素,那么就说明这一行的元素没有比所查找元素大的,我们就可以直接跳过这一行。

而如果右上角的元素比我们要查找的元素大,我们就可以去掉右上角元素所在的这一列。然后依然找右上角的元素继续和要查找的元素与比较。

我们通过这样的算法,每次去掉一行或者一列,写出的代码效率是高于遍历数组的,也满足时间复杂度小于O(N)的要求。


😊题目源码的分享😊


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int findnum(int a[][3], int x, int y, int f) //第一个参数的类型需要调整
{
  int i = 0, j = y - 1;
  //从右上角开始遍历
  while (j >= 0 && i < x)
  {
  if (a[i][j] < f) //比我大就向下
  {
    i++;
  }
  else if (a[i][j] > f) //比我小就向左
  {
    j--;
  }
  else
  {
    return 1;
  }
  }
  return 0;
}
int main()
{
  int a[][3] = { {1, 3, 5},
      {3, 5, 7},
      {5, 7, 9} }; //一个示例
  if (findnum(a, 3, 3, 2))
  {
  printf("找到了!\n");
  }
  else
  {
  printf("没找着!\n");
  }
  return 0;
}

👉 本菜鸡&总结 👈


本篇文章旨在分享C语言详解【C语言每日一题】——杨氏矩阵。🤠希望我的文章能够让大家有所收获!😋😋😋大佬们如果对我的文章有什么建议,或者认为那里写的不好,请在评论区写下您宝贵的意见!😀如果觉得我写的不错的话还请点个赞和关注哦~我会持续输出编程的知识的!🌞🌞🌞  


相关文章
|
21天前
|
存储 SQL 网络协议
C语言C/S架构PACS影像归档和通信系统源码 医院PACS系统源码
医院影像科PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务是把日常产生的各种医学影像(包括核磁、CT、超声、各种X光机、各种红外仪、显微仪等设备产生的图像)通过各种接口(模拟、DICOM、网络)以数字化的方式海量保存起来,并在需要的时候在一定授权下能够快速地调回使用。同时,PACS系统还增加了一些辅助诊断管理功能。
39 11
|
2月前
|
算法 C语言
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
21 0
|
7月前
|
存储 编解码 C语言
【c语言】通讯录(动态版+文件+背景音乐)含源码
【c语言】通讯录(动态版+文件+背景音乐)含源码
64 0
|
4月前
|
NoSQL Linux Redis
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
redis源码调试---vscode使用技巧-----C语言跳转到函数定义
73 0
|
1月前
|
存储 人工智能 搜索推荐
【C语言/C++】电子元器件管理系统(C源码)【独一无二】
【C语言/C++】电子元器件管理系统(C源码)【独一无二】
|
1月前
|
存储 人工智能 机器人
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
|
1月前
|
人工智能 机器人 测试技术
【C/C++】C语言 21点桌牌游戏 (源码) 【独一无二】
【C/C++】C语言 21点桌牌游戏 (源码) 【独一无二】
|
1月前
|
人工智能 机器人 测试技术
【C语言】C语言实现猜单词小游戏(源码+报告)【独一无二】
【C语言】C语言实现猜单词小游戏(源码+报告)【独一无二】
|
6月前
|
文件存储 C语言
【C语言】通讯录系统实现 (保姆级教程,附源码)
【C语言】通讯录系统实现 (保姆级教程,附源码)
168 0
|
2月前
|
C语言
C语言--杨氏矩阵
C语言--杨氏矩阵
12 0