P(n,r)P(n,r)代表元素总数为n的集合中取出r个元素进行排列 个数定理1: P(n,r)=n×(n1)×...×(nr+1)P(n,r)=n\times(n-1)\times...\times(n-r+1)也可写作 P(n,r)=nr+1nP(n,r) = \prod_{n-r+1}^{n}证明: 设 SS是具有 nn个元素的集合,我们取第一个元素时有nn种可能,取第二个元素时有n1n-1种可能,依次类推, 第 rr次有n(r+1)n-(r+1)种可能 ( r<nr<n)。我们要获取P(n,r)P(n,r)可用全排列即 n!n!除去多余部分排列(即 0nr\prod_0^{n-r} )。并约定0!=10!=1,所以证得: P(n,r)=n!(nr)!=nr+1nP(n,r)=\frac{n!}{(n-r)!} =\prod_{n-r+1}^{n}此证明过于简洁,仅作参考。前缀知识包括计数乘法定理。
之前看的科大版本的线性代数,里面并没有提复数的四则运算封闭集合是数域,而北大前代数小组的高等代数提到了这一点,这对初学者是很重要的,我曾被科大的习题支配了很久,原因就是书上没讲的,不敢用,然后证明会走些弯路,比如证Z[2]Z[\sqrt{2}]不为数域,其实可以直接证其对除法不封闭即可
题目: 00年普及组-计算器的改良 此题关键点在于解析运算表达式,把未知数的系数和其他常量区分开,最后作除法即可。 而解析运算表达式的一个技巧就是首先对方程的仔细观察,我们从左边开始解析,会遇到以下几种情况: 是常量?2. 是变量 3. 需要取逆(等式右边) 比如:3x+9=3-3x+9 = -3如果从左往右依次解析,我们需要关注好几个状态。比如遇到字符‘-’后接下来必定是数字,我们可以把这些数字(实际上是字符)推入一个栈中。在遇到字符‘x’时将放入栈中的数字(实际上是字符)全部取出并转化为对应的数加在变量的常系数累加器上面,接下来依次遍历,遇到‘+’号再次将数字9推入栈中,直到遇到‘=’号,把字符从栈中取出转换为数(取逆)加在常量累加器上面,接下来再进行遍历,规则和上面一样,不过,需要对相应的变量系数取逆,最后把常量累加器除以变量累加器,即得结果,你能写出对应的代码吗? 注意 这里的界定状态,一共有几种情况,那么就有几种界定状态
题目:最长单词2 这道题的解法有很多,甚至可以用结构体来做,这里我用最基本的遍历来做。 我们可以先把所有的单词的长度放进一个数组 i am happy. 上面这个句子,我们可以把它看成 {1, 2, 5} 然后我们就可以一次遍历这个数组,获取其中的最大值,然后打印对应的单词,很直观对吧,那么用什么数据结构来做最好呢? 答案是: 二维数组 使用字符二维数组来保存句子,数组中的每个一维字符数组用于储存每个单词,我们仅需遍历一次这个二维数组,然后对每个一维字符数组的长度作比较,保存长度最大的下标,最后输出它