Thuật Toán Tính Tổ Hợp - Cách Tính Tổ Hợp Trong C++
Có thể bạn quan tâm
Hôm nay mình sẽ giới thiệu đến các bạn cách tính tổ hợp trong c++ bằng phương pháp đệ quy và phương pháp lặp. Nhưng trước tiên ta cùng tìm hiểu tổ hợp là gì nhé ?
Trong Toán học, tổ hợp là cách chọn những phần tử từ một nhóm lớn hơn mà không phân biệt thứ tự. Ví dụ chọn 2 trong 3 phần tử {1, 2, 3 } sẽ có ba cách chọn đó là: {1, 2}, {1, 3}, {2, 3}. Các bạn có thể tham khảo tại đây để hiểu rõ hơn.
- Cách tính tổ hợp trong c++ bằng đệ quy
- Cách tính tổ hợp trong c++ bằng phương pháp lặp
Cách tính tổ hợp trong c++ bằng đệ quy
Ta có công thức truy hồi như sau:
Với các tính chất sau:
Từ công thức truy hồi trên ta sẽ dễ dàng viết được một hàm đệ quy để tính tổ hợp như sau:
#include<iostream> using namespace std; int C(int k, int n) { if (k == 0 || k == n) return 1; if (k == 1) return n; return C(k - 1, n - 1) + C(k, n - 1); } int main(){ int n, k; cout << "Nhap k: "; cin >> k; cout << "Nhap n: "; cin >> n; cout << "To hop bang: " << C(k, n); system("pause"); return 0; }Sau khi chạy chương trình thì chúng ta sẽ có kết quả sau
Nhap k: 3 Nhap n: 5 To hop bang: 10Các bạn có thể thấy ở trên mình dùng ba điểm neo để làm điều kiện dừng đó là:
- Tại k bằng 0 hoặc k bằng n thì ta phải return 1
- Tại k bằng 1 thì ta return n
Hoàn toàn đúng với các tính chất mình đã trình bày ở trên nhé ^_^
Nhưng nhược điểm của phương pháp đệ quy này lại là tốc độ. không tin thì bạn cứ thử nhập k và n lớn xí nhé !
Cách tính tổ hợp trong c++ bằng phương pháp lặp
Số các tổ hợp chập k của n phần tử:
Với công thức trên thì ta chỉ cần viết một hàm tính giai thừa là xong rồi phải không nào. Chúng ta cùng bắt đầu nhé
#include<iostream> using namespace std; long long gt(int n) { long long s = 1; for (int i = 1; i <= n; i++) s *= i; return s; } long long C(int k, int n) { return gt(n) / (gt(k)*gt(n - k)); } int main(){ int n, k; cout << "Nhap k: "; cin >> k; cout << "Nhap n: "; cin >> n; cout << "To hop bang: " << C(k, n); system("pause"); return 0; }Mặc dù là nhanh nhưng cách làm trên vẫn không thể tính được nhũng số tổ hợp lớn được. Lý do đơn giản là vì khi tính ra giai thừa thì con số đã rất lớn. Đó cũng là lý do mà mình dùng kiểu long long ở trên (Nhưng chẳng nhằm nhò gì ^_^)
Các bạn thử cải thiện chương trình trên xem sao nhé ! Nếu có gặp khó khăn gì thì đừng ngại comment ở phía dưới mình sẽ hỗ trợ các bạn nhiệt tình. Bye !!!
Từ khóa » Cách Tính C Tổ Hợp
-
Cách Tính C(Tổ Hợp), P(chỉnh Hợp) Trong Xác Xuất | VFO.VN
-
Công Thức Tính Tổ Hợp Chính Xác, đầy đủ Nhất - TopLoigiai
-
Cách Tính Nhẩm Số Tổ Hợp
-
Tính Tổ Hợp Chập Online - Tiện ích Nhỏ
-
Công Thức Tổ Hợp, Chỉnh Hợp, Hoán Vị Và Công Thức Nhị Thức Niu Tơn
-
Hoán Vị, Chỉnh Hợp Và Tổ Hợp: Công Thức Và Các Dạng Chi Tiết
-
Hoán Vị - Chỉnh Hợp - Tổ Hợp: Công Thức Và Bài Tập
-
Công Thức Tính Tổ Hợp Xác Suất Chi Tiết Nhât - Mobitool
-
Tổng Hợp Công Thức Tổ Hợp, Chỉnh Hợp, Hoán Vị, Xác Xuất, Và Nhị ...
-
Hoán Vị - Chỉnh Hợp - Tổ Hợp | Kiến Thức Wiki | Fandom
-
Công Thức Tổ Hợp Chỉnh Hợp Lặp Và Không Lặp Cực Chi Tiết
-
Cách Bấm Xác Suất Trên Máy Tính Cầm Tay, Máy Tính Bỏ Túi Cực đơn Giản
-
Hoán Vị, Chỉnh Hợp Và Tổ Hợp - Minh Nguyen
-
Công Thức Tính Số Tổ Hợp Chập K Của N Phần Tử Và Tính Chất Liên Quan ...