帕斯卡

Pascal's Triangle II(帕斯卡三角形)

大兔子大兔子 提交于 2020-02-13 09:22:46
Given an index k , return the k th row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1] . Note: Could you optimize your algorithm to use only O ( k ) extra space? 杨辉三角形,西方称为帕斯卡三角形     杨辉三角 1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。 2、第n行的数字个数为n个。 3、第n行数字和为2^(n-1)。 4、每个数字等于上一行的左右两个数字之和。可用此性质写出整个帕斯卡三角形。 5、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第2n个斐波那契数。将第2n行第2个数,跟第2n+1行第4个数、第2n+2行第6个数……这些数之和是第2n-1个斐波那契数。 6、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。 7.两个未知数和的n次方运算后的各项系数依次为杨辉三角的第n行。 把每一行看做一个矩阵或者向量,则第n行比第n-1行多一个元素,且每一行的第一个元素都等于1

骆驼(Camel)命名法、帕斯卡(Pascal)命名法、匈牙利命名法

前提是你 提交于 2020-01-17 00:12:37
前言 之前看过这三种命名法的区别,但是记得并不是特别清楚,最近在写文档,正好自己做一下总结来加深印象。 一、骆驼(Camel)命名法 首个单词的首字母小写,之后单词的首字母都大写,也就是驼峰式命名法里面的小驼峰式命名规则,如:selectStudentInfo(); 二、帕斯卡(Pascal)命名法 与骆驼命名法类似,不过帕斯卡命名法是首字母大写,也就是驼峰式命名法里面的大驼峰式命名规则,如:SelectStudentInfo(); 三、匈牙利命名法 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。 命名规则:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。 属性部分 g_ 全局变量 m_ C++类成员变量 s_ 静态变量 c_ 常量 类型部分 数组 a 指针 p 函数 fn 无效 v 句柄 h 长整形 l 布尔 b 浮点型(有时也指文件) f 双字  dw 字符串  sz 短整型  n 双精度浮点 d 计数 c(通常用cnt) 字符 ch(通常用c) 整型 i(通常用n) 字节 by 字 w 实型 r 无符号 u 描述部分 最大 Max 最小 Min 初始化 Init 临时变量 T(或Temp) 源对象 Src 目的对象 Dest 举个栗子 g_cch : g_ 是属性描述

早教编程

孤者浪人 提交于 2019-11-30 13:19:10
在信息化时代, 早教 不会编程无异于文盲! 年初,上海举办了一场少儿编程大赛,近千名选手中有五分之一都是学前儿童,年龄最小的竟然只有四岁! 十年前,有人断言未来不会上网和操作电脑的人会成为“文盲”;而如今,我们也应该敏锐地意识到,将来不会编程的人也将被划入文盲的行列! 为什么早教要学编程? 首先,我要纠正一个常见误区——学前儿童学习编程并不是为了长大做程序员,而是因为编程未来一定会成为一个人生存必需的技能素养。 另外,编程早教并非强求学前儿童写出复杂代码,那是拔苗助长的错误理念;科学的编程早教是让孩子感受编程思想,进行相关的思维训练。 那么,应该如何开展编程的早教呢?接下来我介绍一个方法,即使家长不懂编程,一样可以在家教孩子学习! 早教编程只需一个三角形! 1.什么是帕斯卡三角 帕斯卡三角也叫杨辉三角,是一个由数字组成的三角形,其规则是每个数字都是上一行相邻两数相加之和,最顶上和最边上的数字均为1。 这个三角形和编程有什么关系呢?由于它最基础的原理是递推计算,符合C++、Java等主流编程语言的语法,所以可以用来做孩子的编程思维启蒙。 2.画三角练加减 在具体的训练过程中,由于学前儿童不一定能准确理解帕斯卡三角的计算规则,家长可以先带着孩子一起画,随时解答孩子的困惑。 但详细的数字计算家长不要为孩子代劳,而应该鼓励他们自己计算出结果;如果孩子还没有接触20以上的加减法

51nod 1488 帕斯卡小三角 斜率优化

橙三吉。 提交于 2019-11-27 02:16:40
思路:斜率优化 提交: \(2\) 次 错因:二分写挂 题解: 首先观察可知, 对于点 \(f(X,Y)\) ,一定是由某个点 \((1,p)\) ,先向下走,再向右下走。 并且有个显然的性质,若从 \((1,p)\) 向下走,则 \(a[p]=min(a[i]),i\in [p,Y]\) (要不然直接从后面的更小的那个位置向下走,再向右下走) 还有一个显然的性质,若 \(i<j\) 且 \(i\) 比 \(j\) 更优,则 \(a[i]>a[j]\) (上面的结论) 设 \(s[i]=\sum_{j=i}^i a[j]\) 那么对于点 \(f(X,Y)\) 有 \(ans=s[Y]-s[i]+a[i]*(X-Y+i),i\in [max(1,Y-X),Y]\) 这个式子是可以斜率优化的: \(s[i]-a[i]*i=(X-Y)*a[i]+s[Y]-ans\) 要最小化 \(ans\) ,就是最大化 \(s[Y]-ans\) ,所以我们用单调栈维护下降斜率(上凸包),每次先查找合法区间 \(i\in [max(1,Y-X),Y]\) ,然后再在单调栈中二分斜率。 #include<cstdio> #include<iostream> #include<algorithm> #define R register int using namespace std; namespace