acwing算法基礎之數學知識--求組合數基礎版

目錄

  • 1 基礎知識
  • 2 模板
  • 3 工程化

1 基礎知識

(一)
組合數 C n k C_n^k Cnk?的計算公式,
C n k = n ? ( n ? 1 ) ? ( n ? k + 1 ) 1 ? 2 ? k C_n^k=\frac{n\cdot(n-1)\cdots(n-k+1)}{1\cdot 2\cdots k} Cnk?=1?2?kn?(n?1)?(n?k+1)?
注意需要滿足 k ≤ n k\leq n kn
將上述公式轉換為代碼,如下所示,

int compute_combination_n_k(int n, int k) {if (k > n) {return -1; //-1表示無效值。}long long a = 1;//表示分子long long b = 1;//表示分母for (int i = 1; i <= k; ++i) {a = a * (n - i + 1); //注意這一步可能會超出long long最大值b = b * i;}long long res = a / b;return res;
}

上述代碼在計算分子時比較容易超出long long,一般不采取這種計算方法,除非n比較小。

(二)
組合數的遞推公式,
C n k = C n ? 1 k ? 1 + C n ? 1 k C_n^k=C_{n-1}^{k-1}+C_{n-1}^{k} Cnk?=Cn?1k?1?+Cn?1k?
注意需要滿足 k ≤ n k\leq n kn

利用該公式可以在 O ( n ) O(n) O(n)時間復雜度下求出N以內的所有組合數,代碼如下,

const int N = 2010;
int c[N][N];for (int i = 0; i < N; ++i) {for (int j = 0; j <= i; ++j) {if (!j) {c[i][j] = 1;} else {c[i][j] = c[i-1][j-1] + c[i-1][j];}}
}

使用上述計算方法,一般不會超出long long范圍。

2 模板

暫無。。。

3 工程化

暫無。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164930.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

laravel-admin導出excel全部,表中無id列導出失敗

laravel-admin導出excel時&#xff0c;導出全部數據&#xff0c;但是表中沒有id字段&#xff0c;然后就無法導出excel&#xff1b; 就直接顯示 一開始我也很著急&#xff0c;弄了半天還是不行&#xff0c;然后重寫還是有問題 最后發現底層代碼排序是按照id排序的orderBy(id, a…

Unity地面交互效果——6、地形動態頂點置換和曲面細分

回到目錄 Unity置換貼圖局部距離曲面細分 大家好&#xff0c;我是阿趙。 ??這篇文章是我無聊的時候做了一個demo&#xff0c;覺得挺有趣&#xff0c;于是就發上來。這里面包含了4個內容&#xff1a;置換貼圖、頂點偏移、局部曲面細分&#xff0c;曲面細分按距離調整強度。 …

JVS低代碼表單設計:數據聯動詳解(多級數據級、數據回顯等)

在這信息化時代&#xff0c;表單作為數據的收集和展示工具&#xff0c;已經滲透到不同的角落。JVS低代碼對表單的設計和操作進行了不斷的優化和創新。其中&#xff0c;聯動回顯作為一項重要的功能&#xff0c;無論是多級數據級聯控制、組件的聯動控制&#xff0c;還是多表的數據…

【0基礎學Java第三課】-- 運算符

3. 運算符 3.1 什么是運算符3.2 算術運算符3.2.1 **基本四則運算符&#xff1a;加減乘除模( - * / %&#xff09;**3.2.2 增量運算符 - * %3.2.3 自增/自減運算符 -- 3.3 關系運算符3.4邏輯運算符(重點)3.4.1 邏輯與 &&3.4.2 邏輯 ||3.4.3邏輯非 !3.4.4 短路求值 3.5 …

DBS note4:Buffer Management

目錄 1、介紹 2、緩沖池 3、處理頁面請求 4、LRU替換和時鐘策略 1&#xff09;順序掃描性能 - LRU 5、最近最常使用替換策略&#xff08;MRU Replacement&#xff09; 1&#xff09;Sequential Scanning Performance - MRU 6、練習題 1&#xff09;判斷真假 2&#xf…

華清遠見嵌入式學習——網絡編程——作業4

作業要求&#xff1a;①使用IO多路復用中的select函數實現TCP并發服務器客戶端 ②使用IO多路復用中的poll函數實現TCP并發服務器的服務器端 一、 代碼 #include <myhead.h>#define SERPORT 8888 //服務器端口號 #define SERIP "192.168.114.113"…

Samsung下origen中uboot的配置與編譯

uboot的特點&#xff1a; n代碼結構清晰 n 支持豐富的處理器與開發板&#xff0c;易于移植 n 支持豐富的用戶命令 n 支持豐富的網絡協議 n 支持豐富的文件系統 n 支持豐富的設備驅動 n 更新活躍、用戶較多、資料豐富 n 開放源代碼 n 較高的穩定性 n 不具有通用性&#xff08;不…

JavaScript編程基礎 – 布爾值(Booleans)

JavaScript編程基礎 – 布爾值(Booleans) Javascript Programming Essentials – Booleans 一個JavaScript布爾值包含兩個值中的一個&#xff0c;即 true 或者 false。 本文簡要介紹JavaScript布爾值的具體應用&#xff0c;以及可能作為對象的布爾值等。 1. 布爾值(Booleans)…

Go語言超全詳解(入門級)

文章目錄 1. Go語言的出現2. go版本的hello world3. 數據類型3.0 定義變量3.0.1 如果變量沒有初始化3.0.2 如果變量沒有指定類型3.0.3 :符號3.0.4 多變量聲明3.0.5 匿名變量3.0.6 變量作用域 3.1 基本類型3.2 指針3.2.1 指針聲明和初始化3.2.2 空指針 3.3 數組3.3.1 聲明數組3.…

java+mysql的校園兼職微信小程序(附源碼 調試 文檔)

校園兼職微信小程序 摘要一、引言二、國內外研究現狀三、系統設計四、系統實現與界面展示五、源碼獲取 摘要 本文詳述了一個基于Java和MySQL數據庫技術的校園兼職微信小程序的畢業設計。系統主要分為三種用戶角色&#xff1a;管理員、學生用戶和商家用戶。管理員擁有學生管理、…

jjwt使用說明-筆記

jjwt官網鏈接&#xff1a;https://github.com/jwtk/jjwt POM 依賴 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.12.3</version> </dependency> <dependency><grou…

華納云:linux中vsz和rss有哪些區別

在Linux中&#xff0c;VSZ(Virtual Set Size)和RSS(Resident Set Size)是兩個用于描述進程內存使用的指標&#xff0c;它們表示不同方面的內存情況。 1. VSZ&#xff08;Virtual Set Size&#xff09;: VSZ 表示進程的虛擬內存大小。 包括進程使用的所有內存&#xff0c;包括實…

Python中的函數

一、函數參數與返回值基礎知識 1、不要使用可變類型&#xff08;list等&#xff09;作為參數默認值&#xff0c;用None來代替。 參數默認值只會在函數定義階段被創建一次&#xff0c;之后無論創建多少次&#xff0c;函數內拿到的默認值都是同一個對象&#xff0c;為規避這個問…

Vue 2.0源碼分析-數據驅動

Vue.js 一個核心思想是數據驅動。所謂數據驅動&#xff0c;是指視圖是由數據驅動生成的&#xff0c;我們對視圖的修改&#xff0c;不會直接操作 DOM&#xff0c;而是通過修改數據。它相比我們傳統的前端開發&#xff0c;如使用 jQuery 等前端庫直接修改 DOM&#xff0c;大大簡化…

【python學習】基礎篇-常用模塊-collections模塊:數據結構,如列表、元組、字典和集合等

Python中的collections模塊提供了一些有用的數據結構&#xff0c;如列表、元組、字典和集合等。 以下是collections模塊中一些常用數據結構的用法&#xff1a; Counter類 Counter類是一個字典子類&#xff0c;用于計數可哈希對象。 它可以接受一個可迭代對象作為參數&#xff…

Atlassian Confluence 路徑遍歷和命令執行漏洞 (CVE-2019-3396)

漏洞描述 Confluence 是由澳大利亞軟件公司 Atlassian 開發的基于 Web 的企業 wiki。 Atlassian Confluence 6.14.2 版本之前存在一個未經授權的目錄遍歷漏洞&#xff0c;攻擊者可以使用 Velocity 模板注入讀取任意文件或執行任意命令。 漏洞環境及漏洞利用 啟動docker環境…

快來考試拿證書!KubeSphere 個人技能專業考試認證上線啦!

以容器技術和容器編排為基礎的云原生應用&#xff0c;被越來越多的企業用戶接受和使用&#xff0c;并且在生產環境中使用容器技術的比例逐年增加。Kubernetes 無疑已經成為容器編排的事實基礎&#xff0c;而依托于 Kubernetes 開發的開源容器平臺 KubeSphere 也收獲了一眾擁躉。…

vue3使用provider+ inject直接將參數由祖宗傳送給孫子

如題。在vue項目中&#xff0c;如果祖宗想將參數傳遞給孫子甚至更小一輩的組件&#xff0c;是一件麻煩事。可以通過爺爺-兒子-孫子-曾孫這樣的鏈條&#xff0c;一輩輩地傳承下去&#xff0c;但未免太繁瑣、太蠢了些&#xff1b;也可以通過store間接傳送&#xff0c;但如何觸發孫…

9-什么是迭代器,生成器,裝飾器、django的信號用過嗎?如何用,干過什么、什么是深拷貝,什么是淺拷貝,如何使用、slice操作符和list構造函數

1 什么是迭代器&#xff0c;生成器&#xff0c;裝飾器 2 django的信號用過嗎&#xff1f;如何用&#xff0c;干過什么 3 什么是深拷貝&#xff0c;什么是淺拷貝&#xff0c;如何使用 3.1 淺拷貝 3.2 深拷貝 3.3 擴展(slice操作符和list構造函數) 1 什么是迭代器&#xff0c;生成…

14 redis全量復制與部分復制

1、設置主服務器的地址和端口 首先是在從服務器設置需要同步的主服務器信息&#xff0c;包括機器IP, 端口。 主從復制的開啟&#xff0c;完全是在從節點發起的。不需要我們在主節點做任何事情。 從節點開啟主從復制&#xff0c;有3種方式 配置文件&#xff1a;在從服務器的配…