Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjana Gabungan dalam C dengan Cekap?
Menentukan gabungan dalam C boleh menjadi tugas yang mencabar, terutamanya jika anda sedang mencari penyelesaian fleksibel yang mengendalikan nilai input yang berbeza-beza.
Pendekatan yang bernas untuk masalah ini melibatkan penggunaan fungsi pilih_sudah daripada perpustakaan C standard. Fungsi ini menjana semua pilih atur vektor secara berperingkat. Begini cara anda boleh menggunakan fungsi ini:
#include <iostream> #include <algorithm> #include <vector> int main() { int n, r; std::cin >> n; std::cin >> r; std::vector<bool> v(n); std::fill(v.end() - r, v.end(), true); do { for (int i = 0; i < n; ++i) { if (v[i]) { std::cout << (i + 1) << " "; } } std::cout << "\n"; } while (std::next_permutation(v.begin(), v.end())); return 0; }
Pendekatan ini berkesan mencipta tatasusunan pemilihan (v) dengan nilai pemilih r. Selepas itu, ia berulang melalui semua pilih atur tatasusunan pemilihan ini, mencetak ahli set yang sepadan untuk kedudukan yang dipilih.
Sebagai contoh, jika anda memberikan input "5 2" (S = {1, 2, 3, 4 , 5} dan r = 2), algoritma ini akan mengeluarkan:
1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
Kaedah ini menyediakan penyelesaian yang cekap dan umum untuk menghasilkan kombinasi dalam C .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Gabungan dalam C dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!