Tôi có một hàm nhận n và k để tạo tất cả hoán vị có thể có của n chọn k, và trong khi nó hoạt động cho hầu hết các kết hợp như 5 chọn 3 hoặc 3 chọn 2, nó không cho những người khác như 4 chọn 2. Tôi cần một số trợ giúp tìm và hiểu lỗi. Cảm ơn bạn đã tìm kiếm.Tạo N chọn K Permutations trong C++
Chức năng:
void PermGenerator(int n, int k)
{
int d[] = {1,2,3,4,5,6,7,8,9};
sort (d, d+n);
cout << "These are the Possible Permutations: " << endl;
do
{
for (int i = 0; i < k; i++)
{
cout << d[i] << " ";
if (i == k-1) cout << endl;
}
} while (next_permutation(d, d+n));
}
Tôi đang sử dụng các chức năng next_permutation. cplusplus
Khi tôi cố gắng 4 lựa chọn 2, tôi nên nhận được 12 hoán vị, thay vào đó tôi có được điều này:
1 2
1 2
1 3
1 3
1 4
1 4
2 1
2 1
2 3
2 3
2 4
2 4
3 1
3 1
3 2
3 2
3 4
3 4
4 1
4 1
4 2
4 2
4 3
4 3
Trong khi đó, 3 chọn 2 tác phẩm hoàn hảo với 6 hoán vị có thể:
1 2
1 3
2 1
2 3
3 1
3 2
Cảm ơn bạn! Điều này đã làm các trick. Như MBo đã nói ở trên, tôi đã xuất ra các phần tử k đầu tiên của mảng và tôi không thấy điều đó. – Corghee
@Corghee: Lưu ý rằng có một cách dễ dàng hơn và hiệu quả hơn để thực hiện việc đó bằng cách sử dụng 'std :: reverse'. Xem http://stackoverflow.com/a/2616837/951890 –