搜索行列有序的数组

问题:设M是一个n*n的整数矩阵,其中每一行(从左到右)和每一列(从上到上)的元素都按升序排列。设计算法确定一个给定的整数x是否在M中。

算法思路:

矩阵最右上角的元素是比较特殊的,若它大于x时,则x不在最右列;若它小于x,则x不在最上行。

1、if 矩阵没有元素,返回false;

2、if 矩阵右上角的元素==x,返回true;

3、if 矩阵右上角的元素>x,删除最右列,执行1;

4、if 矩阵右上角的元素<x,删除最上行,执行1;

#include<stdio.h>
#define LOW 4
#define COL 4
int a[LOW][COL]={ {1,8,9,12},{2,13,15,16},{15,16,17,18},{18,20,25,30} };
int x;

bool find(int i,int j)
{
	if (i>=LOW || j<0)
		return false;
	if (x==a[i][j])
		return true;
	if (x>a[i][j])
		return find(i+1,j);
	else
		return find(i,j-1);
}

void main()
{
	scanf("%d",&x);
	printf("%d\n",find(0,3) );
}


 

Numpy是Python中一个强大的科学计算库,主要用于处理大型多维数组矩阵,以及执行各种数学运算。下面是Numpy v1中一些核心功能的简介: 1. **创建数组**:Numpy的核心数据结构是ndarray(n-dimensional array),通过`numpy.array()`或`numpy.zeros()`、`numpy.ones()`、`numpy.empty()`等函数可以创建不同形状和类型的数据。 2. **数组尺寸**:你可以使用`.shape`属性获取数组的维度, `.size`属性得到元素数量,而`.dtype`属性显示数组的元素类型。 3. **数组运算**:Numpy提供了大量的数学函数对数组进行元素级操作,如加减乘除、指数对数等。例如,`a + b`, `a * 2`, `np.sin(a)`等。 4. **数组切片**:使用索引和切片语法,可以访问数组的部分元素或子数组。如`arr[0:3, ::2]`获取数组的一部分。 5. **数组连接**:`numpy.concatenate()`, `numpy.vstack()`, `numpy.hstack()`等函数用于合并数组或沿着某轴堆叠数组。 6. **数据存取**:可以使用索引来存取单个元素,如`arr[i, j]`。对于大规模数组,可以使用切片操作。 7. **数组形态变换**:包括重塑(`reshape()`), 切块(`split()`, `hstack()`, `vstack()`)、堆叠(`stack()`)等操作,改变数组的形状。 8. **数组排序与搜索**:`numpy.sort()`用于排序数组,`numpy.argmax()`, `numpy.argmin()`用于找到最大值和最小值的索引,`numpy.where()`则进行条件搜索。 9. **矩阵与线性代数运算**:Numpy提供了`numpy.linalg`模块,包含许多矩阵操作,如求逆(`inv()`)、行列式(`det()`)、秩(`rank()`)、解线性方程组等。例如,`A = np.random.rand(3, 3)`后,可以做`A.dot(B)`矩阵乘法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值