矩阵

LeetCode.944-删除列保证排序(Delete Columns to Make Sorted)

﹥>﹥吖頭↗ 提交于 2020-03-22 04:12:13
这是悦乐书的第 362 次更新,第 389 篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第224题(顺位题号是944)。我们给出了一个N个小写字母串的数组A,它们的长度都相同。 现在,我们可以选择任何一组删除索引,对于每个字符串,我们删除这些索引中的所有字符。 例如,如果我们有一个数组 A = [“abcdef”,“uvwxyz”] 和删除索引 {0,2,3} ,那么删除后的数组变成了 [“bef”,“vyz”] ,纵向上看,每一列是 [“b”,“v”] , [“e”,“y”] 和 [“f”,“z”] 。(形式上,第c列是 [A[0][c] , A[1][c] ,..., A[A.length-1][c]] 。) 假设我们选择了一组删除索引 D ,使得在删除之后,A中的每个剩余列都处于递增排序顺序。返回 D.length 的最小可能值。例如: 输入:[“cba”,“daf”,“ghi”] 输出:1 说明:在选择 D = {1} 之后,每列 [“c”,“d”,“g”] 和 [“a”,“f”,“i”] 处于递增的排序顺序。如果我们选择 D = {} ,则列 [“b”,“a”,“h”] 将不是递增排序顺序。 输入:[“a”,“b”] 输出:0 说明:D = {} 输入:[“zyx”,“wvu”,“tsr”] 输出:3 说明:D = {0,1,2} 注意 :

关于矩阵

孤街浪徒 提交于 2020-03-21 22:42:27
本章所写都是通过对《工程学线性代数》和《3D数学基础:图形与游戏开发》理解所写 “不幸的是,没人告诉您矩阵像什么——您必须自己去感受。” 来自《 黑客帝国 》对白 .我们曾宣称矩阵表达坐标转换,多以当我们观察矩阵的时候,我们是在观察转换,观察新的坐标系。打这个转换开起来像什么?特定的3D矩阵(旋转,放射等)和3X3矩阵的9个数字之间有什么关系?怎么样构建一个矩阵来做这个转换(而不是盲目的照搬书上的公式)?——3D数学基础 矩阵分为实矩阵和复矩阵,元素是实数的矩阵为实矩阵,元素是复数的为复矩阵。 关于复数: http://www.cnblogs.com/ThreeThousandBigWorld/archive/2012/07/21/2602588.html 单位矩阵我们记做E 转置矩阵: 用 ' 表示转置因为右上角的小t打不出来,a为实数 1)(A')' = A; 2) (A+B)' = A' + B'; 3) (aA)' = aA'; 4) (AB)' = B'A'. 由n阶方阵A的元素所构成的行列式(个元素的位置不变),称为方阵A的行列式,记做|A|或detA 1)|A'| = |A| 2) |aA| = a^n|A| 3) |AB| = |A||B| 伴随矩阵: 行列式|A|的各个元素的代数余子式Aij所构成的矩阵然后再转置就是矩阵A的 伴随矩阵 , 记做A* AA* = A

Deep learning:一(基础知识_1)

别说谁变了你拦得住时间么 提交于 2020-03-21 16:44:19
  不多说,直接上干货! 前言:   最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程 UFLDL Tutorial ,据说这个教程写得浅显易懂,也不太长。不过在这这之前还是复习下machine learning的基础知识,见网页: http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning 。内容其实很短,每小节就那么几分钟,且讲得非常棒。 教程中的一些术语:     Model representation: 其实就是指学习到的函数的表达形式,可以用矩阵表示。     Vectorized implementation: 指定是函数表达式的矢量实现。     Feature scaling: 指是将特征的每一维都进行一个尺度变化,比如说都让其均值为0等。    Normal equations: 这里指的是多元线性回归中参数解的矩阵形式,这个解方程称为normal equations.     Optimization objective: 指的是需要优化的目标函数,比如说logistic中loss function表达式的公式推导。或者多元线性回归中带有规则性的目标函数。    Gradient Descent、Newton

函数与数组

∥☆過路亽.° 提交于 2020-03-21 05:49:59
一:函数 1.什么是函数呢 ? 就是在不断进行加法运算时,为了提高代码的复用性,就把该功能封装为一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这段小程序,那么这种封装形式的具体表现则称之为函数 例如 public class dame{     public static void main(String[] args){     int a = 4+5;        System.out.println("a="+a);       int b = 3+9;        System.out.println("b="+b);       add(4,5);      }     public static int add(int a, int b){        return a+b;     } } 2.函数的格式 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2 , ......){ 执行语句; return 返回值; } 参数类型: 运行这段程序得出的一个运算结果,结果类型,如果函数没有返回值则用 void 来表示该函数没有返回值 函数名:仅仅是一个标识符,可以随意起名字 。 形式参数: 是一个变量,用于存储函数传递进来的实际参数 实际测试:传递给形式参数的具体数值 返回值:返回给调用者的 a:定义函数 1.是否有未知内容参与运算

返回二维数组最大联通子数组的和

无人久伴 提交于 2020-03-19 09:56:46
题目:返回二维数组最大联通子数组的和 设计思路:首先,利用文件读入读出流,读取二维数组,再利用降维的思想,求每一行的最大子数组块,遍历所有行,再将各行的最大子数组块进行判断合并。 代码: #include<iostream> #include<fstream> using namespace std; # define N 100 int zuida(long long int n, long long int a[], long long int *p, long long int *q)//一维数组的最大子数组和 { long long int b[N] = { 0 }; long long int i, sum1 = 0, max1 = 0; for (i = 0; i<n; i++) { if (sum1<0) { sum1 = a[i]; } else { sum1 = sum1 + a[i]; } b[i] = sum1; } max1 = b[0]; for (i = 0; i<n; i++) { if (max1<b[i]) { max1 = b[i]; *q = i; //记录最大子数组的终点位置 } } for (i = *q; i >= 0; i--) { if (b[i] == a[i]) { *p = i;//记录最大子数组的起点 break; } }

C语言总结2

廉价感情. 提交于 2020-03-19 08:42:36
12).预处理指令 1. 什么叫做预处理代码. 以#开头的代码就是预处理代码 #warning #import 2. 手写1个C程序的步骤.(面试题) 1>编写代码 2>编译 1)执行.c中的预处理代码 2)检查语法 3>链接 4>执行 3. 预处理指令的分类.(面试题) ****** 1>文件包含指令 #include 2>宏定义 #define (用来替换代码) 3>条件编译 #if (满足一定的条件才编译) 4. 预处理指令的特点. 1>都是以#开头 2>后面没有分号 3>在编译的时候,检查语法之前进行 "注意 以#开头的代码就是预处理代码 13).sizeof运算符 sizeof运算符的作用? 作用:计算常量,变量在当前系统上内存中所占的字节数 sizeof (数据类型) sizeof (变量)-----用的最多! sizeof (常量) 注意, char类型的变量在内存中占1个字节; char类型的常量在内存中占4个字节; 综上所述,为了安全起见,sizeof后面最好加上括号! 14).按位异或 ^ 异或运算 不同为1,相同为0 注意: 1 相同整数相^的结果是0; 2 一个整数^另一个整数2次结果不变 ; 3^2^2 = 3 3 整数相^跟顺序无关 3^2^3 = 2^3^3 = 2 15). 按位左移或者右移 1,按位左移运算. << 参与按位左移运算的二进制数据.

sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

梦想与她 提交于 2020-03-18 15:16:15
转置矩阵 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^ 题目链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1592 题目描述 把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵,记作A'或A。 给你一个矩阵,求它的转置矩阵。 输入 输入数据的第一行是两个正整数R和C(1<=R,C<=10),分别代表矩阵的行数和列数。接下来R行,每行C个空格隔开的整数。 输出 输出转置后的矩阵,每行中相邻的两个数用空格隔开。 示例输入 3 3 1 2 3 4 5 6 7 8 9 示例输出 1 4 7 2 5 8 3 6 9 提示 代码: 1 #include<iostream> 2 #include<string.h> 3 #include<string> 4 using namespace std; 5 struct vode 6 { 7 int i,j; 8 int date; 9 }; 10 struct node 11 { 12 int mu,nu,tu; 13 struct vode data[1000]; 14 }; 15 struct node M,T; 16 void zhuanzhi(); 17 int main()

1125 上三角矩阵的判断

谁都会走 提交于 2020-03-18 15:15:07
题目来源: https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1125 Description 编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。 上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下: IsUpperTriMatrix(int a, int n); Input 输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。 Output 如果a是上三角矩阵,输出“YES”,否则,输出“NO” Sample Input 4 1 2 3 4 0 2 2 2 0 0 3 4 0 0 0 4 Sample Output YES 题意描述: 输入正整数n和n阶方阵 调用函数IsUpperTriMatrix()判断是否为上三角矩阵,是输出“YES”,否输出“NO” 解题思路: 函数IsUpperTriMatrix()中根据行列的变化规律写出写出判断边界即可 程序代码: 1 #include<stdio.h> 2 int a[11][11]; 3 int IsUpperTriMatrix

数据结构

强颜欢笑 提交于 2020-03-18 14:06:20
1. 几个景点算法: 1.  修路问题:最小生成树(加权值)+ 普利姆 2. 最短路径:图+弗洛伊德算法 3. 汉诺塔: 分支的算法 4. 八皇后:回朔法、 5. 丢手帕 : 约瑟夫问题 2. 线性结构 与非线性结构 1.线性结构 :数据元素之间存在一对一的线性关系 顺序存储结构 , 链式存储结构 (数组,队列,链表和栈) 2 . 非线性结构:(二维数组,多维数组,广义表,树结构,图结构) 3. 稀疏数组 因为该数组中记录了很多值是默认值0,记录了很多没有意义的数据 -》 稀疏数组 代码实现原始二维数组与稀疏数组之间的转化 import org.junit.Test; public class XiShuJuZhen { //创建一个原始的二维数组 11*11 @Test public void testArray() { int[][] charArray = new int[11][11]; //0表示没有棋子,1 表示黑子 2表示蓝子 charArray[1][2] = 1; charArray[2][3] = 2; charArray[4][5] = 2; System.out.println("输出原始的二维数组"); for (int[] is : charArray) { for (int is2 : is) { System.out.print("\t"+is2);

三维数组转二维数组

泄露秘密 提交于 2020-03-18 13:42:12
//示例三维数组 $bom = Array ( [0] => Array ( [0] => Array ( [carrier] => 2 ) [1] => Array ( [name] => B1(硝酸) ) [2] => Array ( [material_id] => 6 ) [3] => Array ( [content] => 1 ) [4] => Array ( [content_unit] => g ) [5] => Array ( [dosage] => 1.087 ) [6] => Array ( [dosage_unit] => kg ) ) [1] => Array ( [0] => Array ( [carrier] => 2 ) [1] => Array ( [name] => K3(MNB)43% ) [2] => Array ( [material_id] => 8 ) [3] => Array ( [content] => 2 ) [4] => Array ( [content_unit] => g ) [5] => Array ( [dosage] => 4.651 ) [6] => Array ( [dosage_unit] => kg ) ) ) //转为二维数组 function array3_to_array2($bom) { $b =