Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Menjana Semua k-Kombinasi n Item dalam C ?
Gabungan Item dalam C
Pengenalan
Menjana semua kemungkinan kombinasi item ialah satu cabaran biasa dalam banyak aplikasi. Artikel ini meneroka algoritma yang cekap untuk menjana semua kombinasi k bagi n item dalam C .
Algoritma
Algoritma menggunakan teknik bitmask untuk mewakili gabungan:
Output
#include <iostream> #include <vector> using namespace std; void combinations(vector<int>& items, int k) { int n = items.size(); for (int bitmask = 0; bitmask < (1 << n); bitmask++) { vector<int> combination; for (int i = 0; i < n; i++) { if ((bitmask >> i) & 1) { combination.push_back(items[i]); } } cout << "Combination: "; for (int item : combination) { cout << item << " "; } cout << endl; } } int main() { vector<int> items = {1, 2, 3, 4, 5}; int k = 3; combinations(items, k); return 0; }
Analisis
Combination: 1 2 3 Combination: 1 2 4 Combination: 1 2 5 Combination: 1 3 4 Combination: 1 3 5 Combination: 1 4 5 Combination: 2 3 4 Combination: 2 3 5 Combination: 2 4 5 Combination: 3 4 5Kerumitan algoritma ialah O(n * 2^n), dengan n ialah bilangan item. Ini kerana ia berulang melalui semua nilai bitmask yang mungkin, setiap satunya mewakili gabungan unik.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menjana Semua k-Kombinasi n Item dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!