Bir dizi {0, 1, 2, 3, 4, 5, 6}
içeren bir deque'im var ve yinelemeyi kullanarak bu sayıların tüm olası kombinasyonlarını oluşturmaya çalışıyorum. İşte Bir deque ve yineleme kullanarak tüm olası kombinasyonları yaratın C++
void combination(vector<node> &comb, deque<node> &numbers) {
if (numbers.empty()) {
for (unsigned int i = 0; i < comb.size(); i++) {
cout << comb[i].id << " ";
}
cout << "\n";
return;
}
comb.push_back(numbers.front());
numbers.pop_front();
combination(comb, numbers);
comb.pop_back();
combination(comb, numbers);
}
benim şimdiki kodudur ve mantıklı ama çalıştırdığınızda bu çıktısı şöyledir:
0 1 2 3 4 5 6
0 1 2 3 4 5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0
Neden değil tüm olası kombinasyonları yazdırma işlevi var mı?
Ayrıca, kullanmak istediğim de bu - Sayıları içeren bir deque ve her birleşimi içeren bir vektör. Sen referans olarak Geçidi kullanan
Bunun bir okul için olduğunu varsayalım egzersiz ya da diğer öğrenme deneyimi? Aksi takdirde, bunun yerine ['std :: next_permutation'] (http://en.cppreference.com/w/cpp/algorithm/next_permutation) kullanmalısınız. –
Bir sorun için Dal ve Sınır yöntemini uygulamak için bunu kullanıyorum. Yani 'next_permutation' kullanamazsınız –
Ayrıca, burada gönderdiğiniz kod derleme yapmaz. "Kombinasyon" yerine "permute" ve "combin.push_back (...)" işlevlerinin "comb.push_back (...)" olması gerektiğini varsayalım mı? – CantrianBear