矩阵

剑指offer -- 顺时针打印矩阵 Java

大憨熊 提交于 2020-01-31 21:22:43
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题思路 【书上方法】从外圈向里圈打印 每次打印一圈 圈内顺时针逐行打印 临界的判断太容易出错啦 package array; import java.util.ArrayList; public class PrintMatrixClockwise { public ArrayList<Integer> printMatrix(int [][] matrix) { int rows = matrix.length; int cols = matrix[0].length; int start = 0; ArrayList<Integer> res = new ArrayList<Integer>(); while (start * 2 < rows && start * 2 < cols) { //System.out.println(start); printMatrixInCircle(matrix,start,rows,cols,res); start++; } return res; }

「笔记」杨氏矩阵x钩子定理

一世执手 提交于 2020-01-31 15:21:24
不会证。 杨氏矩阵定义为这样一个网格图。 如果一个格子 \((i,j)\) 中没有数,那么其下方和右侧的格子均为空。 如果这个格子有数,那么如果他下方和右侧的格子不为空,那么 \((i,j)\) 位置的数必然要小于下方和右侧的格子中的数。 设有 \(n\) 个格子有数。 我们发现杨氏矩阵必然存在一条分界线使得这条线的一侧均有数,另一侧均没有。 那么一个格子的 \(h_{ij}\) 代表,这个有数的格子到下方的分界线的距离+到右侧边界线的距离+1,称为这个点的钩子长。 由此引入钩子定理 杨氏矩阵的个数为: \[\frac{n!}{\prod h_{ij}}\] 来源: https://www.cnblogs.com/Lrefrain/p/12245356.html

numpy模块

末鹿安然 提交于 2020-01-31 14:55:38
numpy 一、numpy介绍 1、随机数生成 2、数组与矩阵 一、numpy介绍 numpy(numerical python)是python科学计算的基本模块,2005年由Travis Oliphant开发。提供了一个N维数组类型ndarry的数据结构,提供了线性代数计算,傅里叶分析,随机数生成等。 1、随机数生成 import numpy as np a = np . random . normal ( 3 , 4 , 100 ) #100个正态分布N(3,4)的随机数 b = np . random . randint ( 0 , 5 , 10 ) #10个[0,4]之间均匀分布的随机整数 c = np . random . choice ( [ 1 , 2 , 3 ] , 100 , replace = True , p = [ 0.3 , 0.25 , 0.45 ] ) #生成100个服从下列分布的随机数 | 1 | 2 | 3 | | 0.3 | 0.25 | 0.45 | 2、数组与矩阵 #创建数组 import numpy as np x = np . array ( [ 1 , 2 , 3 , 4 ] ) #创建矩阵 vimport numpy as np y = np . matrix ( '1,3;7,9' ) #计算矩阵的行列式的值 z = np .

Leetcode 48.旋转图像(Rotate Image)

牧云@^-^@ 提交于 2020-01-31 14:38:47
Leetcode 48.旋转图像 1 题目描述( Leetcode题目链接 )   给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。   说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例: 给定 matrix = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] , 原地旋转输入矩阵,使其变为 : [ [ 7 , 4 , 1 ] , [ 8 , 5 , 2 ] , [ 9 , 6 , 3 ] ] 示例2: 给定 matrix = [ [ 5 , 1 , 9 , 11 ] , [ 2 , 4 , 8 , 10 ] , [ 13 , 3 , 6 , 7 ] , [ 15 , 14 , 12 , 16 ] ] , 原地旋转输入矩阵,使其变为 : [ [ 15 , 13 , 2 , 5 ] , [ 14 , 3 , 4 , 1 ] , [ 12 , 6 , 8 , 9 ] , [ 16 , 7 , 10 , 11 ] ] 2 题解   题目要求,不能使用额外矩阵,需要原地修改。根据顺时针旋转的现象我们可以一圈一圈地旋转,例如对示例2的最外层一圈,像13、1、10和12对应的位置是有关系的,找到这样的关系就行了。 class Solution : def

一维数组和二维数组

我只是一个虾纸丫 提交于 2020-01-31 12:48:59
数组一个变量,存储一组相同类型数据的数据结构。 声明一个变量就是在内存空间划出一块合适的空间 声明一个数组就是在内存空间划出一串连续的空间 数组的基本要素 标识符 数组元素 元素下标:从0开始 元素类型 数组长度固定不变,避免数组越界 一维数组 使用数组 声明数组:告诉计算机数据类型是什么(声明数组时不规定数组长度) 数据类型 数组名 [ ] ; 数据类型 [ ] 数组名 ; 分配空间:告诉计算机分配几个连续空间 数据类型 [ ] 数组名 = new 数据类型 [ 大小 ] ; . . . . . 声明数组并分配空间 数组元素根据类型不同,有不同的初始值 赋值:像分配的格子里放数据 数组赋值 方法1:边声明边赋值 int [ ] scores = { 89 , 79 , 76 } ; int [ ] scores = new int [ ] { 89 , 79 , 76 } ; . . . . . . 不能指定数组长度 方法2:动态地从键盘录入信息并赋值 处理数据 scores.length …数组长度 数组与内存 栈内存:存引用(变量名,类名等) 堆内存:存储数据 引用数据类型的存储方式 基本数据类型存储方式不区分栈内存、堆内存,只是在内存中找个空间存储数据 ArrayIndexOutOfBoundsException数组越界异常 二维数组 二维数组实际上是一个一维数组

2019 第三周作业

混江龙づ霸主 提交于 2020-01-31 08:27:40
一、 判断上三角矩阵 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。 输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。 输入样例: 2 3 1 2 3 0 4 5 0 0 6 2 1 0 -8 2 输出样例: YES NO (1)实验代码 #include<stdio.h> int main(void) { int T,n,i,j,e,count=0; int a[10][10]; int b[100]={0}; //记录判断记录 scanf("%d",&T); for(i=0; i<T; i++) { scanf("%d",&n); for(j=0; j<n; j++) { for(e=0; e<n; e++) { scanf("%d",&a[j][e]); } } for(j=0; j<n; j++) { for(e=0; e<n; e++) { if(j>e && a[j][e] != 0) { count++; } } } if(count==0 ) {

[总结]C语言二维数组作为函数的参数

送分小仙女□ 提交于 2020-01-31 05:21:58
   前言: 今天在实现装配线调度程序时候,用到了二维数组,并将其作为函数的参数。在写程序的时候,遇到一些问题,即二维数组做函数的参数应该如何正确表示。我写程序的错误如下程序所示: 1 #include <cstdio> 2 void print(int *a[3]) 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9 int a[2][3] = {1,2,3,4,5,6}; 10 print(a); 11 return 0; 12 } 编译程序时候,在第10行提示错误信息: |10|error: cannot convert 'int (*)[3]' to 'int**' for argument '1' to 'void print(int**)'|。 根据错误提示我明白了, int *a[3]表示一个一维数组,数组的数据类型为整型指针(int*),数组的大小为3,这是因为[]的优先级高于*的优先级。如是我将程序改写如下,顺利通过编译,得到正确结果。 1 #include <cstdio> 2 void print(int (*a)[3]) //用括号将指针括起来 3 { 4 printf("%d\n",a[0][0]); 5 } 6 7 int main() 8 { 9 int a[2][3] = {1,2,3,4,5

2020-1-30 matlab基础编程学习

我的未来我决定 提交于 2020-01-31 05:02:09
matlab 代码 CGLS代码 泰勒解微分方程 CGLS 共轭梯度的最小二乘问题和代码 预先知识复习: 线性方程组解的问题 假定对于一个含有n个未知数m个方程的线性方程组而言,若n<=m, 则有: 1、方程组有唯一解:当方程组的系数矩阵的秩=方程组增广矩阵的秩=方程组中未知数个数n; 2、方程组有无穷多解:当方程组的系数矩阵的秩=方程组增广矩阵的秩相等且<方程组中未知数个数n 3、方程组无解:当方程组的系数矩阵的秩<方程组增广矩阵的秩的时候 4、若n>m时,当方程组的系数矩阵的秩与方程组增广矩阵的秩相等的时候,方程组有无穷多解; 5、当方程组的系数矩阵的秩小于方程组增广矩阵的秩的时候,方程组无解。 cgls代码实现: A=[5,-4,1,0;-4,6,-4,1;1,-4,6,-4;0,1,-4,5]; b=[2,-1,-1,2]'; n=length(b); w=10; D=diag(diag(A)); CL=-triu(A,1); CLZ=CL'; L=((D-w*CL)*D.^(1/2))/sqrt(w*(2-w)); M=L*L'; C=inv(D)*CL; u=[2,3,4,5]'; g=inv(L)*b; B=inv(L)*A*inv(L)'; v=L'*u; rw=g-B*v; r=L*rw; p=inv(M)*r; z=p; q=A*p; for i=1:50 af

(超级棒)多级指针的使用【指针的总结②】

旧巷老猫 提交于 2020-01-31 04:10:15
(超级棒)C++基础·笔记——多级指针的使用【指针的总结②】 ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 一级指针的理解 二级指针的理解 声明方式 二级指针的认识(理解) 二级指针的操作 多级指针的拓展 总结 指针的个人理解:(打个比方,去指定的位置取东西) ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 方式: 数据类型* 变量名 = 地址 ; (Example:int* p = &a;) #include "iostream" using namespace std; int main() { int a = 0;//初始化为0 int* p = &a;//指针声明,务必初始化地址 //也可以这样:int* p = NULL; p = &a; *p = 8;//修改地址上的数据 cout << "a = " << a << endl;//输出此时a的值 cout << "*p = " << *p << endl;//输出指针p的值 return 0; } 一级指针的理解 一级指针可以理解是 某一个地址的操作符 ——可以对该地址上的内容(数据)进行修改。 二级指针的理解 声明方式 方式:数据类型** 变量名 = 指针的地址/地址的地址;(Example:int* q = &a; int** p = &q; ) #include

K均值聚类的理解和实现

雨燕双飞 提交于 2020-01-31 02:01:43
K均值聚类的理解和实现 1. 距离的测度 1.1 欧式距离 1.2 马氏距离 1.2.1 利用马氏距离对数据进行归一化 1.2.2 利用马氏距离进行分类 2. K均值的基本理论 2.1 K均值的原理和实现 2.2 K均值的缺点 2.3 K均值改进 3. 算法实现 3.1 获取样本 3.2 协方差逆阵方根的计算方法 3.3 聚类实验 3.3.1 一般的K均值聚类 3.3.2 基于马氏距离K-means++聚类 3.3.3 基于肘部法则的K-means++聚类 4.参考资料 1. 距离测度 1.1 欧式距离 在 数学中 , 欧氏距离 或 欧几里德度量 是 欧几里得空间中 两点之间的“普通” 直线距离 。通过这个距离,欧几里德空间成为 度量空间 。相关的 规范 称为 欧几里得范数 。 较早的文献将 度量 指为 毕达哥拉斯度量 。 广义 的欧几里得范数项是 L2范数 或 L2距离 。 通常,对于n维空间来说,欧几里得距离可以表示为: 中的欧式距离如图1.1-1所示: 图1.1-1 中欧几里得距离的表达 标准的欧几里德距离可以是平方的,以便逐渐将更大的重量放置在更远的物体上。在这种情况下,等式变为: 平方欧几里德距离不是一个 度量 ,因为它不满足三角不等式 ; 然而,它经常用于仅需要比较距离的优化问题。 它在 理性三角学 领域也被称为 quadrance 。 1.2 马氏距离