日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

[AcWing]885. 求组合数 I(C++实现)求组合数模板题

發布時間:2024/3/24 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [AcWing]885. 求组合数 I(C++实现)求组合数模板题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[AcWing]885. 求組合數 I(C++實現)求組合數第一種題型模板題

  • 1. 題目
  • 2. 讀題(需要重點注意的東西)
  • 3. 解法
  • 4. 可能有幫助的前置習題
  • 5. 所用到的數據結構與算法思想
  • 6. 總結

求組合數有很多種題型,我們需要根據輸入的數據的范圍來選哪種方式,具體的方式有如下幾種:
主要是詢問次數和數據大小的不同,對應了不同的解法
此外,另有高精度組合數和卡特蘭數兩種特例

1. 題目

2. 讀題(需要重點注意的東西)

思路:

首先,要知道組合數是什么?公式是什么?
一般地,從a個不同的元素中,任取b(b≤a)個元素為一組,叫作從aa個不同元素中取出b個元素的一個組合,這個組合一共有多少組?
公式如下:

可以推出
(先取出1個元素,這個元素可能在b中,可能不在,所以有如下兩種可能)

3. 解法

---------------------------------------------------解法---------------------------------------------------

#include <iostream> #include <algorithm>using namespace std;const int N = 2010, mod = 1e9 + 7;int c[N][N];void init() {for (int i = 0; i < N; i ++ )for (int j = 0; j <= i; j ++ )if (!j) c[i][j] = 1; // 如果j為0else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod; }int main() {int n;init();scanf("%d", &n);while (n -- ){int a, b;scanf("%d%d", &a, &b);printf("%d\n", c[a][b]);}return 0; }

4. 可能有幫助的前置習題

5. 所用到的數據結構與算法思想

  • 組合數

6. 總結

求組合數第一種題型的模板題,理解思路并背下代碼。

總結

以上是生活随笔為你收集整理的[AcWing]885. 求组合数 I(C++实现)求组合数模板题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。