矩阵

5数组指针和引用:数组

谁说我不能喝 提交于 2020-03-29 10:06:19
数组 一维数组:数据类型 数组名 [常量表达式] 注意: 命名规则和变量名相同 数组后面一定是[],方括号内 是常量表达式 常量表达式表达元素的个数,即数组的长度 定义数组的常量表达式不能是变量 引用: 一维数组引用的一般形式:数组名[下标] 数组元素的下标起始值为0 初始化: 单个元素逐一赋值 a[10]=1;a[9]=100;...... 聚合方式赋值 int a[10]={1,2,.....10} ; int a[]={1,2,.....10} ; int a[10]={1,2,.....7} 没被赋值的元素 默认补0 二维数组:数据类型 数组名[常量表达式1][常量表达式2] 注意: 数组名按照标识符命名 二维数组有两个下标 a[3][4] 下标一定是整数a[3][4]表示有12个元素 声明的时候 下标不能是变量 一维数组:连续的内存单位进行排序 二维数组:存储形式与一维相同 引用: 数组名[下标][下标] 起始值从0开始 初始化: 单一元素逐一赋值 聚合方式赋值 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={1,2,3,4} 后面补0; int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 字符数组:char 数组名 [常量表达式] 初始化: 聚合方式 char a

使用指针传递二维数组参数

早过忘川 提交于 2020-03-29 09:11:11
  在c语言中,有的时候会需要传递一个二维数组给函数。然而直接传递二维数组并不像传递一维数组那样容易,我们最好是借用指针来传递二维数组。   要用指针传递二维数组,则必须对二维数组的储存方式有个了解。二维数组在内存中其实也是按照一个序列来排列的,毕竟内存只有高低之分,只有一个方向。因此,二维数组的储存实现是一行行来存储的,存完一行再存下一行,并且是紧挨着存储。   比如定义int a[3][4],那么每行有4个数,一共3行。用指针p来表示数组,int *p;*p = &a[0][0],那么要用p表示a[2][1],就是*(p+2*4+1),这样就能通过传递指针p和表示二维数组长度的数来传递二维数组。 1 /*测试用指针传递二维数组*/ 2 /*by telnetning 13.3.20*/ 3 4 #include <stdio.h> 5 6 /*函数求二维数组所有的数的和的大小*/ 7 int Sum(int *p,int i,int j){ 8 int m; 9 int n; 10 int s; 11 for(n=0;n<=i;n++){ 12 for(m=0;m<=j;m++){ 13 s=*(p+(n*3)+m); 14 } 15 } 16 return s; 17 } 18 int main(){ 19 int s; 20 int a[3][3]; 21 int i,j;

15年3月CCF真题1-图像旋转

回眸只為那壹抹淺笑 提交于 2020-03-29 09:01:24
问题描述   旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。   计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式   输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。   接下来n行每行包含m个整数,表示输入的图像。 输出格式   输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。 样例输入 2 3 1 5 3 3 2 4 样例输出 3 4 5 2 1 3 评测用例规模与约定   1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。 1 #include <iostream> 2 #include <map> 3 4 using namespace std; 5 6 int main() { 7 int m,n; 8 cin>>n>>m; 9 int a[n][m]; 10 for(int i=0;i<n;i++) 11 for(int j=0;j<m;j++) 12 cin>>a[i][j]; 13 14 for(int j=m-1;j>=0;j--) 15 { 16 for(int i=0;i<n;i++) 17 cout<<a[i][j]<<" "; 18 cout<<endl; 19 } 20 return 0; 21 } 来源: https:

CSP201503-1:图像旋转

断了今生、忘了曾经 提交于 2020-03-29 09:01:07
引言: CSP (http://www.cspro.org/lead/application/ccf/login.jsp) 是由 中国计算机学会( CCF )发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事 IT 领域专业技术与技术管理人员,以及高校招考研究生的复试对象。 问题描述   旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。   计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式   输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。   接下来n行每行包含m个整数,表示输入的图像。 输出格式   输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。 样例输入 2 3 1 5 3 3 2 4 样例输出 3 4 5 2 1 3 评测用例规模与约定 1 ≤ n, m ≤ 1,000 ,矩阵中的数都是不超过 1000 的非负整数。 源代码(一):使用动态分配的一维数组 /* 一维数组的方式求解,空间动态分配 */ # include <stdio.h> # include <stdlib.h> # include <memory.h> int main( void ) { int n; // 行数

文本主题模型之潜在语义索引(LSI)

ぃ、小莉子 提交于 2020-03-29 07:43:42
    在文本挖掘中,主题模型是比较特殊的一块,它的思想不同于我们常用的机器学习算法,因此这里我们需要专门来总结文本主题模型的算法。本文关注于潜在语义索引算法(LSI)的原理。 1. 文本主题模型的问题特点     在数据分析中,我们经常会进行非监督学习的聚类算法,它可以对我们的特征数据进行非监督的聚类。而主题模型也是非监督的算法,目的是得到文本按照主题的概率分布。从这个方面来说,主题模型和普通的聚类算法非常的类似。但是两者其实还是有区别的。     聚类算法关注于从样本特征的相似度方面将数据聚类。比如通过数据样本之间的欧式距离,曼哈顿距离的大小聚类等。而主题模型,顾名思义,就是对文字中隐含主题的一种建模方法。比如从“人民的名义”和“达康书记”这两个词我们很容易发现对应的文本有很大的主题相关度,但是如果通过词特征来聚类的话则很难找出,因为聚类方法不能考虑到到隐含的主题这一块。     那么如何找到隐含的主题呢?这个一个大问题。常用的方法一般都是基于统计学的生成方法。即假设以一定的概率选择了一个主题,然后以一定的概率选择当前主题的词。最后这些词组成了我们当前的文本。所有词的统计概率分布可以从语料库获得,具体如何以“一定的概率选择”,这就是各种具体的主题模型算法的任务了。     当然还有一些不是基于统计的方法,比如我们下面讲到的LSI。 2. 潜在语义索引(LSI)概述    

Matlab笔记--->常用命令及操作

不羁岁月 提交于 2020-03-28 19:00:04
matlab全称为矩阵实验室,matrix&laboratory两个词的组合。 一、matlab定义和初始化变量:一般形式: 变量 = 表达式(数) 直接输入,类似: x=2 x=[1,2,3] %或者 x=[1 2 3] y=[1 2 3;4 5 6] A=[1 2;3 4] B=[3 4;5 6] a = [1 2 3 ; 4 5 6 ; 7 8 9 ] %矩阵形式赋值. a = 1:2:10 %固定步长的矩阵. zeros(3,2) %三行两列的全零矩阵. who % 检查工作空间的变量 whos % 检查存于工作空间变量的详细资料 a = 1 2 3 4 5 6 7 8 9 a = 1 3 5 7 9 ans = 0 0 0 0 0 0 Your variables are: A B C X Y Z a ans b f1 f2 fs i num t x y y1 y2 yy Name Size Bytes Class Attributes A 3x3 72 double B 3x3 72 double C 3x3 72 double X 21x21 3528 double Y 21x21 3528 double Z 21x21 3528 double a 1x5 40 double ans 3x2 48 double b 1x32 256 double f1 1x1 8

7.数组

荒凉一梦 提交于 2020-03-28 17:25:52
一、数组的概述 1.定义   多个相同数据类型的数据按照一定的顺序排列的集合,使用一个名字命名,并通过编号的方式对这些数据进行统一管理。 2.特点   ①数组是有序排列的;   ②数组本身是引用数据类型,数组中的元素既可以是基本数据类型,也可以是引用数据类型;   ③创建数组会在内存中开辟一整块连续的空间,而数组通过数组名引用的是这块连续空间的首地址;   ④数组一旦初始化完成,其长度就确定了;数组的长度一旦确定,就不能修改;   ⑤通过索引来访问数组中的元素,速度很快 3.分类 按照维数:一维数组、二维数组、多维数组 按照数组中元素的类型:基本数据类型元素的数组、引用数据类型元素的数组 二、一维数组 1.一维数组的声明和初始化 public class test { public static void main(String[] args) { //数组的声明 int[] arr1; String arr2[]; //数组的静态初始化 arr1 = new int[]{1, 2, 3}; //数组的动态初始化 arr2 = new String[4]; //声明+初始化 int[] arr3 = new int[3]; //类型推断 String[] arr4 = {"str1", "str2", "str3"}; } } 2.访问一维数组中的元素 public class

Keyle的3D数学-学习手札

ⅰ亾dé卋堺 提交于 2020-03-28 07:46:33
数学复习笔记 不断更新中 1.向量 在3D数学中 向量的基本运算有 归一化 ,加法与减法 ,点乘 与叉乘 。 点乘公式如下 所指为 a向量与b向量的夹角 , = 反余弦(ab点乘 / a与b的模相乘) 叉乘公式如下 具体用法在这里 ttp://www.cnblogs.com/Keyle/p/4506699.html 2.矩阵 一般来说矩阵式这样的 矩阵的加法,减法也是一样 性质 矩阵的乘法 向量乘以一个3*3的矩阵 例题 重点看例3 在矩阵中AB!=BA 矩阵的线性变换 (1)利用矩阵做向量的旋转 旋转公式如下 (2)利用矩阵缩放 基本概念 矩阵缩放公式 (3)投影矩阵 首先分为两种透视投影与正交投影,正交投影其实是一个降维的过程(三维变二维) 公式如下 通用投影矩阵 (4)镜像矩阵 任意镜像矩阵公式,我们用n来指定一个平面 (5)矩阵的切变 2D切变公式如下 3D切变如下 (6)矩阵的行列式 公式如下 注意只有方阵才有行列式计算,他的计算结果是一个标量,对角交叉相乘最后相加 3D矩阵计算公式如下 (7)矩阵的逆 性质 计算公式 其中adjM为标准伴随矩阵 其中的 C{11} 叫做代数余子式矩阵 计算方式为 ===> 一个完整的计算方式如下 代数余子矩阵计算比较复杂 实际运用 V是一个向量 我们通过M旋转矩阵进行了旋转,现在要回到原来的位置,那么我们再乘以M矩阵的逆,也就是等于v

JS—二维数组的创建

梦想与她 提交于 2020-03-28 05:53:14
//二维数组的创建 //方法一: var myarr = new Array(); //先声明一维 for ( var i = 0; i < 2; i++) { //一维长度为2 myarr[i] = new Array(); //再声明二维 for ( var j = 0; j < 3; j++) { //二维长度为3 myarr[i][j] = i + j; // 赋值,每个数组元素的值为i+j } } //方法二: var myarr1 = [ [ 0, 1, 2 ], [ 1, 2, 3 ] ]; myarr1[0][1] = 5; //将5的值传入到数组中,覆盖原有值。 //alert(myarr1[0][1]); 来源: https://www.cnblogs.com/feile/p/5450712.html

【JavaScript-二维数组】用JavaScript将表格里的元素添加到二维数组

折月煮酒 提交于 2020-03-28 05:50:04
首先,要知道如何创建二维数组。 http://blog.csdn.net/wangyuchun_799/article/details/38460515 这里引入一种最简单的。 <script type="text/javascript"> var arr = new Array(); //创建一个一维数组 for (var i = 0; i < 2; i++) { arr[i] = new Array(); for (var j = 0; j < 3; j++) { //将每一个子元素有定义为数组 arr[i][j] = "";  //此时的array1[i][j]可以视为二维数组,并初始化二位数组为空字符串 } } arr[0][0]=1;           //给arr赋值 arr[0][1]=2; arr[0][2]=3; arr[1][0]=11; arr[1][1]=22; arr[1][2]=33; document.write(arr);     //1,2,3,11,22,33 </script> 二维数组主要用来干什么呢?博主现在要用到的是将HTML中表格的值添加到二维数组中,以便后续对表格进行单元格合并啊之类的操作(用二维数组进行此类操作更利于后续的代码维护) 好的,那么接下来让我们看看怎么用JavaScript实现将表格里的元素添加到二维数组中吧~