排列组合 排列:从一组对象选一部分进行排序,求排列的方式。重点关注【排序】。 从n个不同的元素,取m个进行排列,求数量 A(n,m) 或 P(n,m) A(n,m)=n*(n-1)*(n-2)*....(n-m+1) 从10个不同物品拿3个(有顺序),A(10,3)=10*9*8=720 组合:从一组对象选一部分,求选择的方式。重点关注【对象】。 从n个不同的元素,取m个,求数量 C(n,m) C(n,m)=A(n,m)/m! 从10个不同物品拿3个(无顺序),C(10,3)=720/6=120 加法,乘法 男生3个,女生5个,找一男一女去收卷,有多少种 3*5 1*5+1*5+1*5 1~7 这七个数字,先拿一个,再拿一个,组成两位数,有多少种 7*6 枚举:根据题目,将所有可能性全列出来,再计算 有1 2 3 4,能够组成的四位偶数有几个 1234 1243 1324 1342 2134 2143 2314 2341 1423 1432 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321 12个 前提是数据量较小。 鸽巢,抽屉 25个同学,去参加兴趣小组,有ABC三个小组,证明至少有一个小组至少包含了多少人。 小组:抽屉 同学:物品 25/3=8 25%3!=0 8+1=9 无论如何分配,肯定存在一个小组,人数不小于9人。 52张牌,抽10张,证明至少有种花色至少有多少张牌。 花色:抽屉 牌:物品 10/4=2 10%4!=0 2+1=3 隔板1:容器分隔 有15个相同的礼物,分发给5个不同的机构,每个机构至少得1份,求分法? 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 A | B | C | D | E 15个物品,14个空,需要插4个板 C(14,4)=(14*13*12*11)/(4*3*2*1) 隔板2:对象分隔 从1~7这7个数字,选两个,但是这两个数字不能挨着,有多少种选择方式。 AXA,A是选择的数字,X是需要中间隔一个的情况 7个数字选两个,相当于选一个AX,和一个A C(6,2) 从1~9这9个数字,选三个,但是这三个数字不能挨着,有多少种选择方式。 C(7,3) 从1~9这9个数字,选两个,但是这两个数字之间至少隔两个,有多少种选择方式。 C(7,2) 包含-排除 先找出所有可能,再把不符合条件的可能去掉 前提是本身求的内容复杂,不符合条件的内容简单 题目: 完成排列组合的专项练习。 将csp03的文章全看完,再完成数论基础的专项练习。 语法基础 存储: bit 比特、位、比特位 计算机存储信息的最小单位 byte 字节 计算机存储信息的基本单位 1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024B 1B=8bit 图片存储(bit):水平像素*垂直像素*位的深度(都是数量单位) 分辨率(PPI):每英寸的像素点的数量,像素点越多,分辨率越高,图像越清晰 关键字: cin cout scanf printf 都不是 控制流关键字:if else switch case default while do for break continue 数据类型关键字:int char bool float double void wchar_t 修饰符关键字:signed unsigned short long const 函数关键字:return static inline static 静态修饰 void a(){ static int num=0; num++; } int main(){ a();//num 1 a();//num 2 } inline 内联声明 先修饰这个函数,实际声明位置在其他地方 类和对象关键字:class struct public private protected this new delete namespace struct people{ int age; string name; void say(){ cout<<this->age; } }; this指当前类型对象的指针 其他:union enum sizeof operator try catch throw auto operator重载运算符
运算符的优先级 【! ~ ++ --】 【* / %】 【+ -】 【<< >>】 【< <= > >=】 【== !=】 【&】【^】【|】 【&&】【||】 【赋值相关】 int a=5,b=3,c=4; bool r=a&b||c^b&&a|c; r的值是true 输出是1 非c++符号 数据结构 算法基础 |