30/09/2018, 19:59

Hỏi Liệt kê các tập con hoán vị

Với a[4]={1,2,3,4} cho trước

for (i = 0; i < 23; i++) {
    for (j = 2; j >= 0; j++) {
        if (a[j] < a[j + 1]) {
            temp = a[3];
            for (k = 3; k > j; k--) {
                a[k] = a[k - 1];
            }
            a[j] = temp;
            break;
        }
    }

Em làm vậy đã đúng chưa
Đề là liệt kê các tập hoán vị của a[4]

... viết 22:10 ngày 30/09/2018

Bạn in ra kết quả đúng thì đúng chứ cần gì phải hỏi người khác.
Trừ khi bạn muốn hỏi code của bạn đã hợp lý chưa.

Mirana viết 22:05 ngày 30/09/2018

mình in ra không đúng mà xem lại mấy lần rồi ko biết sai chỗ nào

Chung viết 22:01 ngày 30/09/2018

mình học cũng ngu lắm, nhưng thấy hình như dòng 2 của bạn có vấn đề.
for(j=0;j>=0;j++)
như thế j chạy mãi à bạn?

minh tran viết 22:13 ngày 30/09/2018

bài toán liệt kê phải có đệ quy chứ dùng vòng lặp rất khó để liệt kê hết tất cả

Gió viết 22:14 ngày 30/09/2018

Bạn có thể kiểm tra kết quả so sánh với hàm chuẩn c++

#include <algorithm> //for next_permutation

... main
int a[]={1,2,3,4};
do{
    for(int i=0;i<4;i++) cout<<a[i]<<' ';
    cout<<endl;
}while(next_permutation(a,a+4));
Bài liên quan
0