【隨便寫寫】爲什麼可以O(m)地得到C(n,m)

我們知道,可以O(m) 地求得(nm) ,做法就是

//return C(n,m)
int choose(int n, int m){
    int res = 1;
    for (int i = 1; i <= m; ++i) {
        res *= n - i;
        res /= i;
    }
    return res;
}

那麼爲什麼這麼做一定正確呢?注意到如下事實:

  • 連續k 個數中一定有且僅有一個可以整除k

那麼上述求解過程就顯然了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章