对角线

C#二位数组 数组矩阵对角线之和

末鹿安然 提交于 2019-12-05 03:15:49
二维数组: public static void Main(string[] args) { int[,] a = new int[3, 3]; Random rom = new Random(); for (int x = 0; x < a.GetLength(0); x++) { for (int y = 0; y < a.GetLength(1); y++) { a[x, y] = rom.Next(31); Console.Write("{0} ", a[x, y]); } Console.WriteLine(""); } } // 求矩阵对角线之和 public static void Main(string[] args) { int[,] a= new int[3, 3]; Random rnd = new Random(); int a1 = 0; int a2 = 0; for (int x = 0; x < a.GetLength(0); x++) { for (int y = 0; y < a.GetLength(1); y++) { a[x, y] = rnd.Next(21); Console.Write("{0} ", a[x, y]); if (x == y) { a1 += a[x, y]; //统计正对角线元素之和 } if (x + y == a

稀疏矩阵存储方式

风流意气都作罢 提交于 2019-12-05 03:04:54
  在数据预处理中,我们需要采集前的数据是非常庞大的。不妨将数据集D视作一个矩阵,每一行对应一个样本,每一列对应某个特征。   而在现实生活中,例如文档分类任务,以每一个字词作为一个特征,特征属性多大成千上万,即数千数万列,而相当一部分特征对于所考虑的问题具有“稀疏性”,也就是矩阵中许多列与当前学习任务无关。这一部分涉及到了特征降维等知识。   在此之前,由于属性的繁多,并不是每一个样本都具有所有属性。矩阵的每一行都将充斥着相当一部分零元素。当样本具有这样的稀疏性时,对学习任务会有不少的好处!例如,线性支持向量机之所以能在文字处理上有良好的性能,恰是由于文本数据在使用字频时具有高度的稀疏性,使得大部分问题都线性可分。而为了存储的高效性,必须了解一些稀疏矩阵的存储方法。 一、Coordinate(COO) 图一、Coordinate存储方式示例   这是最简单的存储格式,每一个元素需要一个三元组来表示,分别是 行号、 列号 以及 数值。这种方式简单易理解,但是空间不是最优的。 二、Compressed Sparse Row(CSR)    图二、Compressed Sparse Row存储方式示例一   CSR不是三元组,而是整体的编码方式。数值values和列号column indices与COO一致,表示一个元素以及其列号。 行偏移row

Project Euler 58: Spiral primes

大兔子大兔子 提交于 2019-12-04 10:26:58
从一开始按以下方式逆时针旋转,可以形成一个边长为七的正方形螺旋: 一个有趣的现象是右下对角线上都有一个奇完全平方数,但是更有趣的是两条对角线上的十三个数中有八个数是素数(已经标红),也就是说素数占比为 \(8/13\approx62\%\) 。如果在上面的螺旋再加一层就可以形成一个边长为九的正文形螺旋。如果这个过程继续下去,在边长为多少的时候两条对角线上的数字中质数占比会低于10%? 分析:这道题和第二十八题非常类似,只不过二十八题是顺时针旋转,所以是右上角元素是完全平方数,而这道题是逆时针旋转,所以右下角元素是完全平方数。回忆二十八题的解题思路,我们从每一层的完全平方数开始,依次递推同一层的另外三个对角线元素的值。这道题也是一样的思路,首先观察每一层右下角的奇完全平方数,如边长为七时右下角的奇完全平方数是四十九,然后从四十九中减去六就得到左下角的对角线元素是四十三,而六恰好是边长七减去一。依次类推,我们从四十三中减去六得到左上角的对角线元素为三十七,再减去六得到右上角对角线元素为三十一。在这四个数中,右下角的完全平方数显然不是素数,所以我们只需要检测剩下三个元素是否是素数就可以了。 一般地,设每一层螺旋的边长为 \(k\) ,显然 \(k\) 只能取大于一的奇数值。则这一层的右下角元素值为 \(k^2\) ,左下角元素为 \(k^2-(k-1)\) ,左上角元素为 \(k^2-2

洛谷月赛 20191109

╄→尐↘猪︶ㄣ 提交于 2019-12-04 03:25:26
真的是超级简单的一次信心赛,但我还是爆炸…… T1:秒切 T2:秒切 T3:这题意是啥??? 明天中午有直播讲解。到时候再把不会的题改了。 T1: 入门难度。 一条n个节点的链,你可以跳过其中k段,求从1到n的最小长度。 贪心跳最大即可。暴力能过。 扫一遍,维护一个当前k段长度和总长度和,当前k段长度打擂台求最大,输出总长度减去最大k段长度。 \(O(n)\) 。 T2: 依旧入门难度。一段01序列,求有多少个连续(均为0或均为1)子串。 扫一遍判断当前值与上一个值是否相等即可。暴力能过。 \(O(n)\) 。 T3: 给定 \(S\) , \(T\) 初始为空串,每次操作在 \(T\) 最前或最后插入一个字符,并求有多少个不同的 \(l\) ,使得 \(l\) 范围内没有对应相同的元素。 (即$\forall i\in[1,~l],S[i] \not= T[T.size()-l+i] $) 17分: 考虑类似于最大公共子串的写法。 表格中的一个格子 \((x,~y)\) 为true,当且仅当对应的 \(S[x]\) 与 \(T[y]\) 不同 每次维护 \(T\) ,并重新求一次 \(l\) 。 把每种相同颜色的方格称为一条对角线,由于只有 \(T\) 的尾部和 \(S\) 的头部能重合,合法的对角线只有上图中的几条。 每次扫一遍图中有几条对角线,线上所有格子均为true。 \

大数据之Numpy

匿名 (未验证) 提交于 2019-12-03 00:26:01
1、NumPy(Numerical Python)是Python语言的一个扩充程序库。提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库! numeric python 数字化的python numpy中最重要的一个形式叫ndarray (n-表示的是n个; d-dimension,维度; array-数组)。 2、Python 本身支持的数值类型有 int(整型,python2 中存在 long 长整型)、float(浮点型)、bool(布尔型) 和 complex(复数型)。 而 Numpy 支持比 Python 本身更为丰富的数值类型。 ndarray:N维数组对象(矩阵),所有元素必须是相同类型. ndarray属性:ndim属性,表示维度个数;shape属性,表示各维度大小;dtype属性,表示数据类型。 Numpy 中,ndarray 类具有六个参数,它们分别为: shape:数组的形状。 dtype:数据类型。 buffer:对象暴露缓冲区接口。 offset:数组数据的偏移量。 strides:数据步长。 order:{‘C’,’F’},以行或列为主排列顺序

np.identity和np.eye

匿名 (未验证) 提交于 2019-12-03 00:19:01
numpy.identity(n, dtype=None) >>> np.identity( 3 ) array( [[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]] ) numpy.eye(N, M=None, k=0, dtype=< class ‘float’>, order=’C’) Parameters: N : int 行数 M : int, 可选,列数,默认等于N k : int, 可选,对角线索引:0(默认值)是指主对角线,正值是指上对角线,而负值是指向下对角线。 order : {‘C’, ‘F’}, optional 可选,内存中以行存储还是以列存储。 >>> np.eye( 2 , dtype=int) array( [[1, 0], [0, 1]] ) >>> np.eye( 3 , k= 1 ) array( [[ 0., 1., 0.], [ 0., 0., 1.], [ 0., 0., 0.]] ) 相当于k等于1,对角线就整体往右边移动一位。 文章来源: np.identity和np.eye

练习7-7 矩阵运算(20 分)

匿名 (未验证) 提交于 2019-12-03 00:18:01
给定一个 n × n 的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数 n ( 1 < n ≤ 1 0 );随后 n 行,每行给出 n 个整数,其间以空格分隔。 输出格式: 在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。 输入样例: 4 2 3 4 1 5 6 1 1 7 1 8 1 1 1 1 1 输出样例: 35 #include<stdio.h> int main() { int n, a[10][10]; int i, j, sum=0; scanf("%d", &n); for(i=0; i<n; i++) for(j=0; j<n; j++){ scanf("%d", &a[i][j]); if(!(i+j==n-1||i==n-1||j==n-1)) sum+=a[i][j]; } printf("%d", sum); return 0; } 文章来源: 练习7-7 矩阵运算(20 分)

关于PCB的Mark点

匿名 (未验证) 提交于 2019-12-02 23:48:02
关于PCB的Mark PCB板子做好后,需要贴装元器件,现在元器件的贴装都是通过机器来完成的(SMT)。SMT中会用到mark点。 一、什么是Mark点 Mark点也叫基准点,为贴装工艺中的所有元器件的贴装提供基准点。因此,Mark点对SMT生产至关重要。 二、ARK点作用及类别 2.1 MARK点分类 单板MARK,贴装单片PCB时需要用到,在PCB板上; 拼板MARK,贴装拼板PCB时需要用到,一般在工艺边上; 局部MARK,用以提高贴装某些元器件的精度,比如QFP、BGA等封装; 1)拼版的工艺边上和不拼版的单板上至少又三个Mark点 呈L形分布,且对脚Mark点关于中心 不 对称(防呆); 3)需拼版的单板上尽量有Mark点,如果没有放置位置,单板上可以没有; 4)集成电路引脚中心间距小于0.65mm的芯片需要在长边对角线上有一对Mark点; 1.2 MARK点的组成 mark点是由标记点/特征点和空旷区组成的: 三、Mark点的设计规范 3.1 形状 要求Mark点标记为实心圆,建议直径1.0mm 3.2 组成 一个完整的MARK点包括:标记点/特征点和空旷区域。 3.3 尺寸 Mark点标记最小的直径一般为1.0mm,最大直径一般为3.0mm 3.4 位置 Mark点位于电路板对角线的相对位置且尽可能地距离分开,最好分布在最长对角线位置。因此MARK点都必须成对出现

对角线遍历

匿名 (未验证) 提交于 2019-12-02 23:32:01
题目:给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 说明: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,4,7,5,3,6,8,9] 所以,即先创建空列表,然后append迭代添加即可。 还是自己多画图找规律。 class Solution: def findDiagonalOrder(self, matrix: List[List[int]]) -> List[int]: if(matrix==[]): return [] r=0 c=0 row=len(matrix) col=len(matrix[0]) a=row*col res=[] for i in range(a): res.append(matrix[r][c]) if((r+c)%2==0): if(c==col-1): r=r+1 elif(r==0): c=c+1 else: r=r-1 c=c+1 else: if(r==row-1): c=c+1 elif(c==0): r=r+1 else: r=r+1 c=c-1 return res 这里,编写时出了俩错, 第一个:r=0,c=0 不能这么写,应该改为r,c=0,0 第二个:python里面没有自增,自减