矩阵

C++基础:二维数组动态的申请内存和释放内存

不问归期 提交于 2020-02-07 04:38:27
使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存。常见的申请内存的方法有两种:malloc/free 和 new/delete。 一、malloc/free (1)申请一维数组 void dynamicCreate1Array() { int m; int i; int *p; cout<<("please input the length of data:"); cin >> m; p = (int*)malloc(sizeof(int)*m);//动态开辟 cout << "please input data" << endl; for (i = 0; i < m; i++) cin >> p[i]; cout << "data is :"; for (i = 0; i < m; i++) cout << p[i] << endl; free(p); } (2)申请二维数组 void dynamicCreate2Array() { int m, n; int i, j; int **p; printf("please input the row and col:"); cin >> m >> n; //scanf("%d%d", &m, &n); p = (int**)malloc(sizeof(int*)*m); //开辟行 for (i = 0;

动态分配二维数组 C++

眉间皱痕 提交于 2020-02-07 02:25:06
动态分配二维数组 1)采用指针的指针 T** 2)指针的指针指向一片存放指针数组作为行 3)指针数组中每一个元素都指向一个元素数组作为列 例如: int main(){ int h, l; cin >> h >> l; int **ptr; //定义一个 int** 的指针 //分配空间 ptr = new int*[h]; //使其指向一片有 h 个元素的数组 每一个元素存放一个指针 for (int i = 0; i < h; ++i) ptr[i] = new int[l]; //使每一个数组指针指向一片有 l 的元素的数组 每一个元素存放一个整型变量 //赋值 for (int i = 0; i < h; ++i) for (int j = 0; j < l; ++j) cin >> ptr[i][j]; //输出 for (int i = 0; i < h; ++i){ for (int j = 0; j < l; ++j) cout << ptr[i][j] << ','; cout << endl; } //释放空间 for (int j = 0; j < l; ++j) delete[] ptr[j]; delete[] ptr; return 0; } 来源: CSDN 作者: weixin_45644911 链接: https://blog.csdn.net

记一道c二级题目

吃可爱长大的小学妹 提交于 2020-02-07 00:23:19
建立一个NxN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3, 依此类推。例如,若N=5,生成的矩阵为: # include <stdio.h> # define N 7 int main ( ) { int x [ N ] [ N ] = { 0 } , i , j ; int k , m ; if ( N % 2 == 0 ) m = N / 2 ; else m = N / 2 + 1 ; for ( i = 0 ; i < m ; i ++ ) { for ( j = i ; j < N - i ; j ++ ) x [ i ] [ j ] = x [ N - i - 1 ] [ j ] = i + 1 ; for ( k = i + 1 ; k < N - i ; k ++ ) x [ k ] [ i ] = x [ k ] [ N - i - 1 ] = i + 1 ; } i = j = 0 ; printf ( "\nThe result is:\n" ) ; for ( i = 0 ; i < N ; i ++ ) { for ( j = 0 ; j < N ; j ++ ) printf ( "%3d" , x [ i ] [ j ] ) ; printf ( "\n" ) ; } return 0

05-spectral 图机器学习之谱分解

一个人想着一个人 提交于 2020-02-07 00:12:51
目标: 1)创建图的表征矩阵 2)分解:计算矩阵的特征值和特征向量;基于一个或多个特征值,将每个点表示成低维的表征 3)分组:基于新的表征,进行聚类 例如,二分图中如何确定好的分类?类间差异大,类内差异小 最小割集 考虑: 1)团外的连接性 2)团内的连接性 评价方式: 团间的连接性与每个团的密度相关 spectral graph partitioning 谱图分割 无向图G的邻接矩阵A x是n维的特征向量,可认为是G中每个节点的label或者value 那么Ax等到的结果的意义是? yi是节点i的邻居节点的label的和 通过yi生成新的x value 谱图理论: 分析G的表征矩阵的spectrum spectrum的意义: 图的特征向量xi,(由特征值大小排序而得) 一个例子:假设G中的所有节点的度都有d,G是连通的。那么,G的特征值和特征向量是? d是A的最大特征值 若G不是完全连通的 矩阵表征 邻接矩阵:对称矩阵,有n个特征值,特征向量是实数且是正交的 度矩阵: 拉普拉斯矩阵:L=D-A 对称矩阵 λ=λ1=0 ?? 特征值为非负实数 特征向量是实数且永远正交 对于对称矩阵M,λ2的值由一公式可定 为xi--xj的平方和 找到最优的x 发现最优的割法 谱聚类算法: 1)图的表征矩阵 2)矩阵的特征值和特征向量;基于特征向量生成每个店的低维向量 3)分组 例子 k-way

2718:移动路线

徘徊边缘 提交于 2020-02-06 23:46:47
题目链接: http://noi.openjudge.cn/ch0206/2718/ 总时间限制:1000ms内存限制:65536kB 描述 ×桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从 左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。 对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示: ------------------- |(2,1)|(2,2)|(2,3)| ------------------- |(1,1)|(1,2)|(1,3)| ------------------- 蚂蚁共有3种移动路线: 路线1:(1,1) → (1,2) → (1,3) → (2,3) 路线2:(1,1) → (1,2) → (2,2) → (2,3) 路线3:(1,1) → (2,1) → (2,2) → (2,3) 输入 输入只有一行

模型,视图,投影,平移,旋转,缩放六大矩阵

蹲街弑〆低调 提交于 2020-02-06 20:07:14
模型矩阵ModelMatrix 在Unity中,每一个GameObject上面都会有一个Transform,用来记录这个Object的position,rotation和scale. 这可以用另外三个矩阵表示。 视图矩阵ViewMatrix 视图矩阵用来将物体从世界坐标系转变为摄像机坐标系。 投影矩阵ProjectionMatrix 投影矩阵用来将物体从摄像机坐标系转变为屏幕坐标系。 --------------- 以上三个变换矩阵,取首字母就是mvpmatrix。这些矩阵实际计算每个需要再分解为3个矩阵,即平移,旋转,缩放。 其中旋转矩阵是正交矩阵。The orthogonal matrix,如果一个矩阵满足以下几个条件,则此矩阵就是正交矩阵: (1)是一个方阵 (2)转置矩阵等于逆矩阵 如果A为一个正交矩阵,则A满足以下条件: A的各行是单位向量且两两正交 A的各列是单位向量且两两正交 参考 https://blog.csdn.net/silangquan/article/details/50987196 https://blog.csdn.net/silangquan/article/details/50984641 https://blog.csdn.net/charlee44/article/details/102063461 http://www.opengl

旁观OpenGL里的透视投影矩阵

一笑奈何 提交于 2020-02-06 11:58:04
OpenGL里的代码已经形成和使用了好多年,从程序员的角度,对OpenGL底层代码做升级或修改的实际意义并不大,而且风险高。所以,修改底层算法的想法是有些太狂了。但是,从教学的角度、提供一种新的视角去理解、或者重新再解读前人代码字里行间潜在的、独立于代码作者的理解而存在的深意,应该是值得探讨探讨的。这就是旁观了,观棋不语真君子,实在手痒拿起棋子、自己从头用代码把等价的功能重新实现一遍,或者是可能的。 我记得当年刚学Turbo Pascal /Turbo C 2.0编写几何变换程序的时候,我感觉 “平行投影”、尤其三维空间里向 x O y xOy x O y 坐标平面的正平行投影是毫无意义、根本不需要存在的,而且我自己也完全没有意识到它存在就已经开始画图了。因为获得三维的点坐标 ( x , y , z ) (x,y,z) ( x , y , z ) 之后,直接从代码里面拿 ( x , y ) (x,y) ( x , y ) 的数据来用就是了,谁还管它投影不投影?头晕不头晕、麻烦不麻烦? 从很多国内搞图形学的研究者们发表的文章里来看,即使认识到齐次坐标和齐次矩阵表示几何变换的重要性和有用性,大家也一直并不严格区分降秩的投影和非降秩的几何变换。所以,概念的理解上至少在不少实用派的人的认识中实际是一直处于混乱状态,但这不意味着所有的人都糊涂。但糊涂的人多了,带着这种糊涂认识的文章

Java基础题——二维数组

妖精的绣舞 提交于 2020-02-06 11:44:32
问题描述 随机产生一个5x5的二维数组(输出的数字必须大于零,小于十) 问题: 输出该随机数组 1.求出对角线上的数字总和(注意交点上的数字不能重复计算) 2.将数组对角线上的数字换成【*】 样列: // 1 6 6 6 6 // 1 2 3 4 5 // 1 6 5 4 3 // 1 2 2 2 2 // 2 5 5 5 5 // 29 // * 6 6 6 * // 1 * 3 * 5 // 1 6 * 4 3 // 1 * 2 * 2 // * 5 5 5 * 代码 package YRZ ; public class YRZ01 { public static void main ( String [ ] args ) { int m = 5 ; int n = 5 ; int [ ] [ ] arr = new int [ m ] [ n ] ; //构建一个空的二维数组 for ( int i = 0 ; i < arr . length ; i ++ ) { for ( int j = 0 ; j < arr [ i ] . length ; j ++ ) { arr [ i ] [ j ] = ( int ) ( Math . random ( ) * 9 ) + 1 ; System . out . print ( arr [ i ] [ j ] + " " )

js二维数组和多维数组

混江龙づ霸主 提交于 2020-02-06 10:48:42
先来打印一个二维数组 var arr = [ ] ; for ( var i = 0 ; i < 10 ; i ++ ) { arr [ i ] = [ ] ; for ( var j = 0 ; j < 10 ; j ++ ) { arr [ i ] [ j ] = i * 10 + j ; } } console . log ( arr ) ; 打印出的结果如下图所示:每一行每一列都有唯一对应值。 多维数组: var arr = [ ] ; for ( var i = 0 ; i < 3 ; i ++ ) { arr [ i ] = [ ] ; for ( var j = 0 ; j < 3 ; j ++ ) { arr [ i ] [ j ] = [ ] ; for ( var k = 0 ; k < 3 ; k ++ ) { arr [ i ] [ j ] [ k ] = i * 100 + j * 10 + k ; } } } console . log ( arr ) ; //如果如下 arr = [ [ [ 0 , 1 , 2 ] , [ 10 , 11 , 12 ] , [ 20 , 21 , 22 ] ] , [ [ 100 , 101 , 102 ] , [ 110 , 111 , 112 ] , [ 120 , 121 , 122 ] ] , [ [ 200

matlab考试重点详解

谁说我不能喝 提交于 2020-02-06 09:56:22
  此帖是根据期末考试复习重点补充完成, 由于使用word编辑引用图片和链接略有不便, 所以开此贴供复习及学习使用。侵删 复习要点 第一章 Matlab的基本概念,名称的来源,基本功能,帮助的使用方法 1.基本概念和名称来源: MATLAB [1] 是美国 MathWorks 公司出品的商业 数学软件 , 用于算法开发、数据可视化、数据分析以及 数值计算 的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 MATLAB是matrix&laboratory两个词的 组合 ,意为矩阵工厂(矩阵实验室) 2.基本功能:   2.1数值计算和符号计算功能   MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。   2.2绘图功能,matlab提供了两个层次的绘图操作。一种是对图形句柄,进行底层绘图操作。另一种是建立在低层绘图操作之上的高层绘图操作。   2.3编程语言   MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高   2.4MATLAB工具箱   MATLAB包含两部分内容:基本部分和各种可选的工具箱。   MATLAB工具箱分为两大类:功能性工具箱和学科性工具箱。 3.帮助的使用方法   3.1 帮助命令   MATLAB帮助命令包括help命令和lookfor命令。