算法基础数学知识篇(1)之----- 排列数组
排列數組
- 前言
- 一、隔板法
- 二、分組分配法
前言
排列組合在算法求解中尤為重要,特別是對于方案數的求解,以及我們知道本質之后可以對其進行深入的挖掘。如 x+y=4x + y = 4x+y=4,求解的數量,如果數據小,我們可以枚舉,但是如果數據量大我們什么辦呢?首先我們需要對這個問題進行抽象,把 x ,y 看成兩個盒子,4看成有4個小球,那么這題就轉換為了,將4個相同的球分配到2個盒子(允許有空盒)的方案數,那么就是C(4+2?1,1)=5C(4 + 2 - 1,1) = 5C(4+2?1,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、分組加分配
前一步是分組問題,后一步是分配問題,因此我們在解決的時候,先分組*分配
總結
以上是生活随笔為你收集整理的算法基础数学知识篇(1)之----- 排列数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法篇之-----滑动窗口(尺取法)
- 下一篇: 读ACM程序设计竞赛基础教程之-----