Dãy nghịch thế

Một phần của tài liệu Một Số Cấu Trúc Dữ Liệu Đặc Biệt (Trang 51 - 52)

4. Một số bài toán ví dụ

4.2.5. Dãy nghịch thế

Cho là một số nguyên dương và ( ) là một hoán vị của dãy số ( 2 ). Với , gọi là số phần tử đứng trước giá trị mà lớn hơn trong dãy . Khi đó dãy ( ) được gọi là dãy nghịch thế của dãy ( ).

Ví dụ: Với

Dãy ( 2 ) thì dãy nghịch thế của nó là (2 ) Dãy ( 2 ) thì dãy nghịch thế của nó là ( ) Dãy ( 2 ) thì dãy nghịch thế của nó là ( 2 ) Vấn đề đặt ra là :

 Cho trước một dãy hoán vị , hãy tìm dãy nghịch thế của

 Cho trước một dãy nghịch thế , hãy tìm dãy hoán vị nhận làm dãy nghịch thế.

Dữ liệu: Vào từ file văn bản IVECTOR.INP gồm 3 dòng:

 Dòng 1: Chứa số nguyên dương .

 Dòng 2: Chứa dãy hoán vị gồm số

 Dòng 3: Chứa dãy nghịch thế : gồm số

Kết quả: Ghi ra file văn bản IVECTOR.OUT gồm 2 dòng:

 Dòng 1: Ghi lần lượt từng phần tử của dãy nghịch thế của

 Dòng 2: Ghi lần lượt từng phần tử của dãy hoán vị của

Các số trên một dòng của Input/Output files được/phải ghi cách nhau ít nhất một dấu cách IVECTOR.INP IVECTOR.OUT 6 1 2 3 4 5 6 2 1 0 1 1 0 0 0 0 0 0 0 3 2 1 6 4 5

Gợi ý lời giải:

Từ dãy hoán vị tìm dãy nghịch thế :

Khởi tạo lại dãy toàn bằng 0, điền lần lượt các số từ 1 tới trở lại dãy . Mỗi khi điền số vào vị trí , ta đếm số lượng số 0 đứng trước vị trí , số lượng đó

chính là . Việc đếm số lượng số 0 đứng trước vị trí có thể thực hiện bằng cây quản lý phạm vi 1 chiềụ

Từ dãy nghịch thế khôi phục dãy hoán vị :

Khởi tạo dãy toàn bằng 0, xét lần lượt , khi xét tới , thay số 0 thứ trong dãy bởi số . Việc xác định số 0 thứ có thể thực hiện bằng cây quản lý phạm vi 1 chiềụ

Thời gian thực hiện giải thuật ( ). Chương trình: IVECTOR.PAS

Một phần của tài liệu Một Số Cấu Trúc Dữ Liệu Đặc Biệt (Trang 51 - 52)

Tải bản đầy đủ (PDF)

(89 trang)