算法基础数学知识篇(1)之----- 排列数组

前言

排列组合在算法求解中尤为重要,特别是对于方案数的求解,以及我们知道本质之后可以对其进行深入的挖掘。如 x + y = 4 x + y = 4 x+y=4,求解的数量,如果数据小,我们可以枚举,但是如果数据量大我们什么办呢?首先我们需要对这个问题进行抽象,把 x ,y 看成两个盒子,4看成有4个小球,那么这题就转换为了,将4个相同的球分配到2个盒子(允许有空盒)的方案数,那么就是 C ( 4 + 2 − 1 , 1 ) = 5 C(4 + 2 - 1,1) = 5 C(4+21,1)=5

一、隔板法

相同元素的分配问题
1、条件和直接用法
在这里插入图片描述

转变为在n-1个空隙中,放入k-1个板子的排列组合问题(k是盒子数量)

2、变式一,放入的个数不是1的时候而是m的时候什么办

我们以2个先来讲,因为隔板法都是1个,那么我们就可以先将m个球放入m个盒子里,这样剩余的球就又变成了隔板问题。相当于分解子问题,那么分出的m个球我们也利用隔板法 ,不过在这个例子是1,所以间隔数与隔板数一样因此就是1,剩余就是(n-m)个进行隔板法。

那如果是每一个盒子至少放k个了,在这里我们可以发现我们先放的数量就是和盒子要求的至少少一个是一样的,因此我们这一部分的发的方法都是1.
在这里插入图片描述

3、变式二,小球个数不是1,但是不都是一样的,如下
在这里插入图片描述

我们的做法如图还是先放一部分,让剩余的满足条件,那么这里就说一说,先放的为什么方法是1,我们可以都先放的再进行一次分割子问题,变成不小于编号-1的球,然后再将这几个球按照同样的方式先放一部分,最后我们发现,这样一直分,没一个部分的分的方法都是1按照乘法原理最后就是1了。

4、有空盒的情况
我们是借与盒子数量相同的球,然后再进行隔板法
在这里插入图片描述

二、分组分配法

1、分组
在这里插入图片描述

2、分组加分配
前一步是分组问题,后一步是分配问题,因此我们在解决的时候,先分组*分配
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
图书目录 第Ⅰ部分 预备知识   第1章 ANSI C概述1   1.1 什么是C   1.2 C程序的结构   1.3 变量、值和类型   1.4 表达式   1.5 语句   1.6 函数   1.7 小结   1.8 复习题   1.9 编程练习   第2章 C的数据类型   2.1 枚举类型   2.2 数据和内存   2.3 指针   2.4 数组   2.5 指针和数组   2.6 记录   2.7 动态分配   2.8 小结   2.9 复习题   2.10 编程练习   第3章 库和接口   3.1 接口的概念   3.2 随机数字   3.3 字符串   3.4 标准的I/O库   3.5 其他ANSI库   3.6 小结   3.7 复习题   3.8 编程练习   第Ⅱ部分 递归和算法分析   第4章 递归入门   4.1 一个简单的递归示例   4.2 阶乘函数   4.3 费波那契函数   4.4 其他递归示例   4.5 以递归的方式思考   4.6 小结   4.7 复习题   4.8 编程练习   第5章 递归过程   5.1 汉诺塔   5.2 产生排列   5.3 递归在绘图中的应用   5.4 小结   5.5 复习题   5.6 编程练习   第6章 回溯算法   6.1 用递归回溯解决迷宫问题   6.2 回溯与游戏   6.3 小结   6.4 复习题   6.5 编程练习   第7章 算法分析   7.1 排序问题   7.2 计算复杂度   7.2.6 大O的正式定义   7.3 递归帮助   7.4 标准复杂度类型   7.5 快速排序算法   7.6 数学归纳   7.7 小结   7.8 复习题   7.9 编程练习   第Ⅲ部分 数据抽象   第8章 抽象数据类型   ……   第9章 效率与ADT   第10章 线性结构   第11章 符号表   第Ⅳ部分 递归数据   第12章 递归链表   第13章 树   第14章 表达式树   第15章 集合   第16章 图   第17章 展望Java
软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础   1.1 数制及其转换      • 二进制、十进制和十六进制等常用制数制及其相互转换   1.2 数据的表示      • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)      • 非数值表示(字符和汉字表示、声音表示、图像表示)      • 校验方和校验码(奇偶校验码、海明校验码、循环冗余校验码)   1.3 算术运算和逻辑运算      • 逻辑代数的基本运算和逻辑表达式的化简   1.4 数学基础知识      • 命题逻辑、谓词逻辑、形式逻辑的基础知识      • 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)      • 排列组合、概率论应用、应用统计(数据的统计分析)      • 运算基本方(预测与决策、线性规划、网络图、模拟)   1.5 常用数据结构      • 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作      • Hash(存储地址计算,冲突处理)   1.6 常用算法      • 排序算法、查找算法、数值计算方、字符串处理方、数据压缩算法、递归算法、图的相关算法      • 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性  2.计算机系统知识   2.1 硬件知识    2.1.1 计算机系统的组成、体系结构分类及特性      • CPU和存储器的组成、性能和基本工作原理      • 常用I/O设备、通信设备的性能,以及基本工作原理      • I/O接口的功能、类型和特性      • I/O控制方式(中断系统、DMA、I/O处理机方式)      • CISC/RISC,流水线操作,多处理机,并行处理   2.1.2 存储系统      • 主存-Cache存储系统的工作原理      • 虚拟存储器基本工作原理,多级存储体系的性能价格      • RAID类型和特性   2.1.3 安全性、可靠性与系统性能评测基础知识      • 诊断与容错      • 系统可靠性分析评价      • 计算机系统性能评测方式   2.2 软件知识    2.2.1 操作系统知识      • 操作系统的内核(中断控制)、进程、线程概念      • 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)      • 存储管理(主存保护、动态连接分配、分段、分页、虚存)      • 设备管理(I/O控制、假脱机)      • 文件管理(文件目录、文件组织、存取方、存取控制、恢复处理)      • 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)      • 汉字处理,多媒体处理,人机界面      • 网络操作系统和嵌入式操作系统基础知识      • 操作系统的配置    2.2.2 程序设计语言和语言处理程序的知识      • 汇编、编译、解释系统的基础知识和基本工作原理      • 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用      • 各类程序设计语言主要特点和适用情况   2.3 计算机网络知识      • 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)      • 传输介质、传输技术、传输方、传输控制      • 常用网络设备和各类通信设备      • Client/Server结构、Browser/Server结构      • LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接      • 因特网基础知识以及应用      • 网络软件      • 网络管理      • 网络性能分析   2.4 数据库知识      • 数据库管理系统的功能和特征      • 数据库模型(概念模式、外模式、内模式)      • 数据模型,ER图,第一范式、第二范式、第三范式      • 数据操作(集合运算和关系运算)      • 数据库语言(SQL)      • 数据库的控制功能(并发控制、恢复、安全性、完整性)      • 数据仓库和分布式数据库基础知识   2.5 多媒体知识      • 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式      • 简单图形的绘制,图像文件的处理方      • 音频和视频信息的应用      • 多媒体应用开发过程   2.6 系统性能知识      • 性能指标(响应时间、吞吐量、周转时间)和性能设计     

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值