首页 > 其他分享 >C语言解题||杨氏矩阵

C语言解题||杨氏矩阵

时间:2024-02-03 18:01:15浏览次数:20  
标签:arr struct point int 矩阵 ret C语言 解题 杨氏

题目:

请编写一个程序,在杨氏矩阵中查找某个数字是否存在。

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

杨氏矩阵 :一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的。

代码实现:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <assert.h>

struct point
{
	int x;
	int y;

};

struct point Search(int arr[3][3], int rows, int cols, int num)
{
	assert(arr);
	
	struct point ret = { -1, -1 };

	int x = 0;
	int y = cols - 1;
	
	while (x <= rows && y >= 0)
	{
		if (num > arr[x][y])
		{
			x++;
		}
		else if (num < arr[x][y])
		{
			y--;
		}
		else
		{
			ret.x = x;
			ret.y = y;

			return ret;
		}
	}
	return ret;
}

int main()
{
	int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int input = 0;

	printf("请输入您要查找的数:");

	//输入
	while (scanf("%d", &input) == 1)
	{
		//处理
		struct point ret = Search(arr, 3, 3, input);

		//输出
		if (ret.x >= 0 && ret.y >= 0)
		{
			printf("%d的下标的是%d %d\n", input, ret.x, ret.y);
		}
		else
		{
			printf("该数在次杨氏矩阵中不存在\n");
		}
	}

	return 0;
}


C语言解题||杨氏矩阵_杨氏矩阵

标签:arr,struct,point,int,矩阵,ret,C语言,解题,杨氏
From: https://blog.51cto.com/u_16509575/9570038

相关文章

  • C语言学习9
    前面写float的数据类型后,输入0.0,编译器默认是double类型的变量,后加f才是floatgoto语句上述例子死循环,goto=飞雷神苦无.....但使用多了,程序出现的BUG也会增多,其次也不能跨函数跳转,如下:真正适用场景例子:预备:shutdown-s:关机,shutdown-t:定时关机,(注意空格);shutdown-a:取消关机左上角注:......
  • c语言小练习——字符串长度、拷贝、拼接、比较
    /* 使用c语言知识实现下面程序: 1,实现strlen函数的功能 2,实现strcpy函数的功能 3,实现strcat函数的功能 4,实现strcmp函数的功能 不允许使用已有的str函数*/1#define_CRT_SECURE_NO_WARNINGS2#include<stdio.h>3#include<string.h>4#include<stdbool.h>5#......
  • C语言解题||字符串左旋
    题目:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋1个字符得到BCDAABCD左旋2个字符得到CDAB代码实现:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>//除第1个外,全部往前1位,然后原第1个填充至极右voidLeft_reverse(......
  • C语言“->“和“p->next“的理解
    这是对"->"的理解在c语言中,"->"是结构体指针的运算符.它允许你通过指向结构体的指针来访问结构体中的成员.例如,以下定义了一个student类的结构体,其中包含两个字符串类型的成员:"name","id",以及一个整形成员"age",可以使用如下方式访问结构体成员:structstudent{c......
  • PanelForensics解题小技巧
    镜像素材选自美亚春苗集训营实训,由XiAnG提供写在前面首先是为什么要做成SSH连接的形式,主要是有以下原因如果读取镜像,那么耗时非常久,且需要解决镜像读取、挂载、文件系统解析等问题,导致软件体积太大,不适于当前软件需求如果读取文件,那么需要将指定的文件从镜像中导出,这与软件......
  • 【解题报告】CodeForces523D:Statistics of Recompressing Videos
    CF523D解题报告CF523D先上结果:前两次语言选错了,编译一直不过(做这题是因为集训老师让我做我就做了,要不然我都快忘了我有CF账号了(思路省流:STL大法开一个小根堆存目前正在运行的服务器(也可以大根堆,但是存时间进去的时候存负的),如果有空机就直接处理,这个视频处理完的时间就......
  • 排队(利用step by step解题)(动态规划+概率)
    第2题   排队(利用stepbystep解题)查看测评数据信息您刚刚在超市购物,然后前往结账。有两条队伍可用。第一个队伍目前有len1人,而第二个队伍有len2人。你想知道排在第一个队伍比排在第二条队伍“好”(即更早轮到你)的概率。第一个队伍的收银员准备开始给第一个队伍的第一个人......
  • 桌面应用开发GTK Glade (C语言)
    目录Github教程简介可视化设计生成XML描述文件与多种编程语言兼容与IDE集成安装Glade示例demo.gladedemo.cGithubhttps://github.com/GNOME/gtkhttps://github.com/GNOME/gladegitclonehttps://github.com/GNOME/glade.git教程https://developer.gnome.org/简介G......
  • c语言考研自命题热点
    一段C语言代码是怎么执行的C语言代码的执行可以分为几个主要步骤,包括编译、链接和运行。以下是一段简单的C语言代码的执行过程:编写代码:首先,程序员编写C语言代码,包括变量声明、函数定义、控制结构等。编写的代码被保存在源文件中,通常使用.c扩展名。预处理(Preprocessing):在编译之......
  • C语言学习7
    do while 循环翻译:上来就是干事,然后while看看要不要再次执行流程图如下例子:break的应用continue的含义相同例子:1!+2!+....+10!算法下一个例子但更优解是应用二分查找和折半查找由于是一组有序数字,只要知道每一次最左边的下标和最右边的下标就可以完成对于中间数字的查找,一次一次对半......