C语言初阶习题【29】杨氏矩阵

news/2025/1/18 3:36:57/

1. 题目描述——杨氏矩阵

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

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

2. 思路

在这里插入图片描述

3. 代码实现1

#include<stdio.h>void find_k(int arr[3][3], int row, int col, int k)
{int x = 0;int y = col-1;int flag = 0;while(x <= row - 1 && y >= 0) //行一直增加,但是最大是2,列一直减少,但是最小是0,如果超过这个范围就超出数组范围了{if (k > arr[x][y]){x++;}else if (k < arr[x][y]){y--;}else{printf("找到了,下标是:%d,%d\n",x,y);flag = 1;break;}}if(flag==0)printf("没找到\n");
}int main()
{int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };int k = 7;find_k(arr, 3, 3,k);return 0;
}

在这里插入图片描述

4. 代码实现2

在代码实现1的基础上进行改进,我们把找到元素的下标,也返回出来
这里涉及到我们的函数只有一个返回值,所以我们使用指针来把我们的下标带回来

#include<stdio.h>int find_k(int arr[3][3], int *row, int *col, int k)
{int x = 0;int y = *col - 1;while (x <= *row - 1 && y >= 0) //行一直增加,但是最大是2,列一直减少,但是最小是0,如果超过这个范围就超出数组范围了{if (k > arr[x][y]){x++;}else if (k < arr[x][y]){y--;}else{*row = x;*col = y;return 1;}}return 0;
}int main()
{int arr[3][3] = { 1,2,3,4,5,6,7,8,9 };int k = 7;int row = 3;int col = 3;int ret = find_k(arr, &row, &col, k);if (ret == 0){printf("找不到!\n");}else{printf("找到了,数组下标为(%d,%d)", row, col);}return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/1564048.html

相关文章

C#调用OpenCvSharp实现图像的开运算和闭运算

对图像同时进行腐蚀和膨胀操作&#xff0c;顺序不同则效果也不同。先腐蚀后膨胀为开运算&#xff0c;能够消除小斑点和细小的突出物、平滑图像以及改善边缘&#xff1b;先膨胀后腐蚀为闭运算&#xff0c;能够去除噪点、填补图像孔洞、连接邻近物体和平滑物体边界。   OpenCvS…

jenkins常用插件和旧版本插件下载——筑梦之路

常用插件 Git Plugin&#xff1a;支持Git版本控制系统&#xff0c;以便从Git仓库拉取代码。几乎所有使用Git作为版本控制的项目都会用到此插件。 Pipeline&#xff1a;允许用户用代码定义整个CI/CD流水线&#xff0c;适合复杂的构建、测试和发布流程。 Blue Ocean&#xff1a…

人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能任务19-基于BERT、ELMO模型对诈骗信息文本进行识别与应用。近日&#xff0c;演员王星因接到一份看似来自知名公司的拍戏邀约&#xff0c;被骗至泰国并最终被带到缅甸。这一事件迅速引发了社会的广泛关注。该…

AI Prompt 设计指南:从基础构建到高质量生成的全面解析

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

【20250112】TRO论文:下肢外骨骼机器人的“触感透明度”与交互力实时控制新方法...

引言&#xff1a;人机交互力控制是优化下肢外骨骼机器人性能的重要环节&#xff0c;精准的交互力控制对用户的安全和舒适性至关重要。传统的外骨骼控制策略通常依赖简化的动力学模型&#xff0c;忽略了外骨骼与人体之间复杂的全身动态相互作用。而引入全身动力学建模并结合优化…

如何攻击一个服务器(仅用于教育及娱乐实验目的)

import socket import osdef create_virus():# 创建一个简单的病毒脚本&#xff0c;它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…

C# 特性(Attributes)详解

C# 特性&#xff08;Attributes&#xff09;详解 什么是特性&#xff1f; 特性&#xff08;Attributes&#xff09; 是 C# 提供的一种强大的元数据机制&#xff0c;用于在代码中添加描述性信息。它可以附加到程序的各种部分&#xff08;类、方法、属性、字段等&#xff09;&a…

如何通过 Nginx 实现 CouchDB 集群的负载均衡并监控请求分发

在现代分布式系统中&#xff0c;负载均衡是确保高可用性和性能的关键组件。CouchDB 是一个强大的分布式数据库&#xff0c;而 Nginx 是一个高性能的反向代理和负载均衡器。本文将详细介绍如何通过 Nginx 实现 CouchDB 集群的负载均衡&#xff0c;并监控请求被分发到哪一台 Couc…