Bài 260: Cho mảng a, b Hãy cho biết mảng b có phải hoán vị mảng a không #include #include #include #define MAX 100 void nhap (int a[], int &n) { { printf("\nNhap so phan tu: "); scanf("%d", &n); if(n MAX) { printf("\nSo phan tu khong hop le Xin kiem tra lai !"); } }while(n MAX); for(int i = 0; i < n; i++) { printf("\nNhap a[%d]: ", i); scanf("%d", &a[i]); } } void xuat(int a[], int n) { for(int i = 0; i < n; i++) { printf("%4d", a[i]); } } /* Khái niệm hoán vị diễn tả ý tưởng đối tượng phân biệt xếp theo thứ tự khác Ví dụ, với số từ đến sáu, cách thứ tự tạo thành dãy số không lặp lại Một hoán vị là: "3, 4, 6, 1, 2, 5" */ void HoanVi(int &a, int &b) { int temp = a; a = b; b = temp; } void SapXepTangDan(int a[], int n) { for(int i = 0; i < n - 1; i++) { for(int j = i + 1; j < n; j++) { if(a[i] > a[j]) { HoanVi(a[i], a[j]); } } } } void KiemTraBCoPhaiLaHoanViCuaA(int a[],int b[], int na, int nb) { if(na != nb) { printf("\nKhong phai"); // Số lượng phần tử phải return; } SapXepTangDan(a, na); // Sắp xếp mảng a SapXepTangDan(b, nb); // Sắp xếp mảng b for(int i = 0; i < na; i++) { if(a[i] != b[i]) { printf("\nKhong phai"); return; } } printf("\nPhai"); return; } int main() { int na, nb; int a[MAX], b[MAX]; nhap(a, na); xuat(a, na); nhap(b, nb); xuat(b, nb); KiemTraBCoPhaiLaHoanViCuaA(a, b, na, nb); getch(); return 0; }