1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ôn tập cấu trúc dữ liệu và giải thuật

37 294 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 208,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khai báo cấu trúc dữ liệu vàviết thuật giải cho biết mỗi loại tiền cần bao nhiêu tờ sao cho tổng số tờ là ít nhất... Khai báo cấu trúc dữ liệu và viết thuật giải xác định danh sách các t

Trang 1

CÂU HỎI ÔN TẬP Phần 1 CTDL và Thuật giải

1 Cho 1 mảng gồm n các số nguyên a[1], a[2], , a[n] và một số nguyên S Khai báo cấu trúc

dữ liệu và viết thuật giải tìm tất cả các dãy con {x1, x2, , xk} sao cho:

1 <= k <= n;

1 <= x1 < x2 < < xk <= n ;

và a[x1] + a[x2] + + a[xk] = S

2 Có N gói kẹo được đánh số từ 1 đến N (N<=100) Gói thứ i có Ai cục kẹo Khai báo cấu trúc

dữ liệu và viết thuật giải chia N gói kẹo thành hai phần sao cho độ chênh lệch số kẹo giữahai phần là ít nhất Yêu cầu, không được thay đổi số kẹo trong mỗi gói Cho biết độ chênhlệch nhỏ nhất giữa hai phần và danh sách gói kẹo của từng phần

3 Có N chi tiết, được đánh số từ 1 tới N, cần được gia công Các chi tiết có thể cho gia côngtrên máy A hoặc máy B Các máy này có thể hoạt động độc lập hay đồng thời Biết rằng thờigian gia công chi tiết i trên máy A là a[i] và trên máy B là b[i] (1 ≤ i ≤ n)

Khai báo cấu trúc dữ liệu và viết thuật giải tìm 1 phương án phân công cho các máy để thờigian hoàn thành cả N chi tiết là sớm nhất

4 Có N đồ vật được đánh số từ 1 đến N Đồ vật thứ i có trọng lượng là Ai và có giá trị sử dụng

là Ci Một người cần chọn một số đồ vật trong N đồ vật đó sao cho tổng giá trị các đồ vậtđược chọn là lớn nhất nhưng tổng trọng lượng của chúng không vượt quá giá trị M chotrước

Khai báo cấu trúc dữ liệu và viết thuật giải xác định các đồ vật cần chọn

5 Trong cửa hàng có N mặt hàng được đánh số từ 1 đến N, mặt hàng thứ i có giá tiền là Ai.Một người cha mang theo số tiền là M cần chọn 4 mặt hàng khác nhau để làm quà cho cáccon, sao cho tổng số tiền của 4 mặt hàng này không lớn hơn số tiền M mang theo và độchênh lệch giá tiền của mặt hàng đắt nhất và mặt hàng rẻ nhất trong 4 mặt hàng được chọn lànhỏ nhất

Khai báo cấu trúc dữ liệu và viết thuật giải xác định 4 mặt hàng đó

6 Có 2 đội cờ A và B, mỗi đội có N người được đánh số từ 1 đến N, tham gia thi đấu N trận,mỗi trận đấu gồm một người của đội A và một người của đội B Huấn luyện viên của đội A

tự đánh giá trình độ của người thứ i trong đội A là Ai và trình độ của người thứ i trong đội B

là Bi Hai người thi đấu có cùng trình độ thì hòa; người nào có trình độ cao hơn thì thắng.Mỗi trận nếu thắng thì được 2 điểm, hòa 1 điểm, thua 0 điểm Khai báo cấu trúc dữ liệu vàviết thuật giải sắp xếp lịch thi đấu để đội A được nhiều điểm nhất, cho biết danh sách các cặpthi đấu

7 Cho dãy A gồm N số nguyên Khai báo cấu trúc dữ liệu và viết thuật giải để tìm các hoán vị{X1, X2, , Xn} của tập {1, 2, , N} sao cho A[X1] <= A[X2] <= <= A[XN]

Ví dụ:

i 1 2 3 4 5A[i] 6 2 8 4 9

Trang 2

Hoán vị X cần tìm:

i 1 2 3 4 5X[i] 2 4 1 3 5bA[X[i]] 2 4 6 8 9

8 Cho N loại tờ giấy bạc (N < 50) Tờ giấy bạc thứ i có mệnh giá phân biệt là A[i] Số tờ mỗiloại không giới hạn Cần chi trả cho khách hàng số tiền M đồng Khai báo cấu trúc dữ liệu vàviết thuật giải cho biết mỗi loại tiền cần bao nhiêu tờ sao cho tổng số tờ là ít nhất

Ví dụ: N = 4 và M = 10

Mảng A chứa các giá trị {1, 2, 3, 4}

Kết quả: Số tờ = 3

Trong đó : 2 to loai 4, 1 to loai 2

9 Có N phòng học, được đánh số từ 1 đến N, phòng học thứ i có sức chứa là P[i] sinh viên; và

K lớp học (K<=N), được đánh số từ 1 đến K, lớp học thứ j có số sinh viên là L[j] Phòng đàotạo cần xếp phòng cho các lớp, mỗi lớp 1 phòng

Khai báo cấu trúc dữ liệu và viết thuật giải chọn ra K phòng để xếp cho các lớp, sao cho tổng

số chỗ trống của các phòng được chọn là nhỏ nhất Cho biết các phòng đó là những phòngnào, lớp được xếp tương ứng cho mỗi phòng

10 Tại một kho chứa hàng có N khu vực, mỗi khu vực được đánh số từ 1 đến N, khu vực thứ i

có sức chứa là V[i] container Người ta cần chất M container vào các khu vực này

Khai báo cấu trúc dữ liệu và viết thuật giải chọn ra các khu vực được dùng để xếp Mcontainer sao cho phần còn trống sau khi đã xếp M container ở các khu vực đó là ít nhất

11 Trong một kho hóa chất hiện có N thùng chứa cùng một loại dung dịch Thùng thứ i hiệnchứa A[i] lít dung dịch Do các thùng chứa đã cũ, nên người ta cần bỏ một số thùng cũ vàchứa dung dịch sang những thùng chứa mới

Khai báo cấu trúc dữ liệu và viết thuật giải xác định số thùng cũ nhiều nhất cần loại bỏ saocho dung dịch của các thùng đó được đổ đầy vào các thùng chứa mới Biết rằng, số thùngmới không hạn chế và mỗi thùng đều có dung tích là M lít

13 Có N thành phố được mã hóa bằng các số từ 1 đến N, chi phí đi từ thành phố i đến thành phố

j là C[i,j] với 1≤ i, j ≤ n Một người đang ở thành phố có mã số 1, muốn đi qua tất cả cácthành phố khác và kết thúc tại thành phố có mã số N

Trang 3

Khai báo cấu trúc dữ liệu và viết thuật giải xác định danh sách các thành phố phải đi qua saocho tổng chi phí theo hành trình này là ít nhất và trên hành trình đó không được đi qua mộtthành phố nào đó quá 1 lần.

14 Khai báo cấu trúc dữ liệu và viết thuật giải tìm tập hợp các dấu '+’, ‘-‘ và không dấu giữadãy số 123456789 sao cho được một biểu thức có giá trị bằng một số nguyên N cho trước

Ví dụ: N = 280 ta có các tổ hợp sau:

1 + 2 + 345 – 67 + 8 – 9

1 + 234 – 5 + 67 – 8 – 9

123 – 4 + 5 + 67 + 89

15 Khai báo cấu trúc dữ liệu và viết thuật giải xác định tất cả các cách phân tích số tự nhiên N

>1 thành tổng các số tự nhiên nhỏ hơn nó (mọi phân tích chỉ kể đúng một lần: 4+3+1 và1+4+3 chỉ là một)

16 Có n thành phố (được đánh số từ 1 đến n) Một người đi du lịch xuất phát từ thành phố số 1muốn đi thăm các thành phố khác, mỗi thành phố đúng một lần rồi quay về nơi xuất phát.Giả thiết biết được chi phí đi từ thành phố i đến thành phố j là C[i, j] với 1≤ i, j ≤ n

Khai báo cấu trúc dữ liệu và viết thuật giải xác định một hành trình cho người du lịch đểtổng chi phí theo hành trình này là ít nhất

17 Người ta cần đặt 8 Quân Hậu vào các ô trên bàn cờ quốc tế có kích thước 8 dòng và 8 cộtsao cho các quân Hậu không ăn nhau Biết rằng 2 quân Hậu không ăn nhau nếu chúng khôngcùng nằm trên một dòng hoặc trên một cột hoặc trên các đường chéo

Hãy khai báo cấu trúc dữ liệu và viết thuật giải xác định các ô cần đặt 8 quân hậu trên bàncờ

4

Trang 4

18 Trên bàn cờ quốc tế có kích thước 8 dòng và 8 cột, người ta đặt Quân Mã tại ô thuộc dòng 1cột 1 Khai báo cấu trúc dữ liệu và viết thuật giải xác định các bước đi của Quân Mã trên tất

cả các ô của bàn cờ sao cho mỗi ô chỉ đi qua một lần

19 Mỗi hột xí ngầu có 6 mặt, mỗi mặt chứa từ 1 đến 6 dấu chấm Khai báo cấu trúc dữ liệu vàviết thuật giải liệt kê các kết quả phân biệt có thể có khi đổ cùng lúc 3 hột xí ngầu, không kểthứ tự xuất hiện trên các hột xí ngầu, ví dụ {1, 2, 3} và {2, 3, 1} là như nhau

20 Khai báo cấu trúc dữ liệu và viết thuật giải điền vào một ma trận vuông cấp 3 các số từ 1 đến

9 sao cho các số ở dòng thứ i hợp thành 1 số gấp i lần số hợp bởi dòng thứ 1

Ví dụ :

2 7 3

5 4 6

8 1 9

Trang 5

HƯỚNG DẪN BÀI GIẢI

1 Cho 1 mảng gồm n các số nguyên a[1], a[2], , a[n] và một số nguyên S Khai báo cấu trúc dữliệu và viết thuật giải tìm tất cả các dãy con {x1, x2, , xk} sao cho: 1<=x1<x2< <xk<=n và a[x1] + a[x2] + + a[xk] = S

Khai báo cấu trúc:

Input:

Mảng nguyên A[1 N];

Số nguyên S : Giá trị điều kiện cho trước;

Output:

Mảng nguyên X[1 N]: chứa dãy nhị phân với qui ước X[i] =1 thì A[X[i]] được chọn

Thuật giải: Khởi tạo giá trị ban đầu

X[i]: chứa giá trị 0 hay 1;

{

for (int v =0; v<= 1; v++)

Trang 6

Thuật giải: Kiểm Tra Mảng X

2 Có N gói kẹo được đánh số từ 1 đến N (N<=100) Gói thứ i có Ai cục kẹo Khai báo cấu trúc

dữ liệu và viết thuật giải chia N gói kẹo thành hai phần sao cho độ chênh lệch số kẹo giữahai phần là ít nhất Yêu cầu, không được thay đổi số kẹo trong mỗi gói Cho biết độ chênhlệch nhỏ nhất giữa hai phần và danh sách gói kẹo của từng phần

Khai báo cấu trúc:

Trang 7

Mảng X[1 N]: chứa dãy nhị phân xác định gói kẹo được chọn.

Trang 8

if (abs(S1-S2)<D) {

Y = X;

D= abs(S1-S2);

}}

3 Có N chi tiết, được đánh số từ 1 tới N, cần được gia công Các chi tiết có thể cho gia côngtrên máy A hoặc máy B Các máy này có thể hoạt động độc lập hay đồng thời Biết rằng thờigian gia công chi tiết i trên máy A là a[i] và trên máy B là b[i] (1 ≤ i ≤ n) Khai báo cấu trúc

dữ liệu và viết thuật giải tìm 1 phương án phân công cho các máy để thời gian hoàn thành

Mảng X[1 N]: chứa dãy nhị phân xác định chi tiết được gia công trên A hay B

D : thời gian của phương án tối ưu

Thuật giải: Khởi tạo giá trị ban đầu

Trang 10

4 Có N đồ vật được đánh số từ 1 đến N Đồ vật thứ i có trọng lượng là Ai và có giá trị sử dụng

là Ci Một người cần chọn một số đồ vật trong N đồ vật đó sao cho tổng giá trị các đồ vậtđược chọn là lớn nhất nhưng tổng trọng lượng của chúng không vượt quá M Khai báo cấutrúc dữ liệu và viết thuật giải xác định các đồ vật cần chọn

Khai báo cấu trúc:

Input:

Mảng A[1 N] chứa trọng lượng của mỗi đồ vật;

Mảng C[1 N] chứa giá trị của mỗi đồ vật;

Output:

Mảng Y[1 N] : chứa dãy nhị phân xác định phương án được chọn tối ưu

Temp

Mảng X[1 N]: chứa dãy nhị phân xác định vật được chọn

D : Tổng giá trị vật chọn theo phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

X[ i ] = v;

Trang 11

Thuật giải: Cập nhật lời giải tối ưu

{

S = W = 0;

for(int j =1; j<=N; j++)

if (X[j] == 1) {

S +=C[X[j]];

W+=A[X[j]];

}else

S+=B[X[j]];

if (W<=M && S>D) {

Y = X;

D= S;

}}

5 Trong cửa hàng có N mặt hàng được đánh số từ 1 đến N, mặt hàng thứ i có giá tiền là Ai.Một người cha mang theo số tiền là M cần chọn 4 mặt hàng khác nhau để làm quà cho cáccon, sao cho tổng số tiền của 4 mặt hàng này không lớn hơn số tiền M mang theo và độchênh lệch giá tiền của mặt hàng đắt nhất và mặt hàng rẻ nhất trong 4 mặt hàng được chọn

là nhỏ nhất Khai báo cấu trúc dữ liệu và viết thuật giải xác định 4 mặt hàng đó

Trang 12

Khai báo cấu trúc:

Input:

Mảng A[1 N] chứa giá tiền của mỗi mặt hàng;

M : Số tiền mang theo;

Output:

Mảng Y[1 4] : chứa phương án được chọn tối ưu

Temp

Mảng X[0 4]: chứa dãy chỉ số của 4 mặt hàng được chọn

D : Độ chênh lệch theo phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

Trang 13

Thuật giải: Cập nhật lời giải tối ưu

Y = X;

D= M-m;

}}

6 Có 2 đội cờ A và B, mỗi đội có N người được đánh số từ 1 đến N, tham gia thi đấu N trận,mỗi trận đấu gồm một người của đội A và một người của đội B Huấn luyện viên của đội A

tự đánh giá trình độ của người thứ i trong đội A là Ai và trình độ của người thứ i trong đội B

là Bi Hai người thi đấu có cùng trình độ thì hòa; người nào có trình độ cao hơn thì thắng.Mỗi trận nếu thắng thì được 2 điểm, hòa 1 điểm, thua 0 điểm Khai báo cấu trúc dữ liệu vàviết thuật giải sắp xếp lịch thi đấu để đội A được nhiều điểm nhất

Khai báo cấu trúc:

Input:

Mảng A[1 N] chứa trình độ mỗi vận động viên đội A;

Mảng B[1 N] chứa trình độ mỗi vận động viên đội B;

Output:

Mảng Y[1 4] : chứa phương án được chọn tối ưu

Trang 14

a Mảng X[1 N]: chứa hoán vị tìm được

b Mảng F[1 N] : ghi nhớ tình trạng đã chọn của từng giá trị trong tập S={1, 2, , n}, vớiqui ước:

F[ v ] = 0 nếu v chưa chọn

F[ v ] = 1 nếu v đã chọn

− D : Chứa điểm của phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

if ( i == N )

Cập nhật lời giải tối ưu();

else { F[v]= 1;

Xác định giá trị phần tử X[ i + 1];

F[v]= 0;

}

Trang 15

Thuật giải: Cập nhật lời giải tối ưu

Y = X;

D = S;

}}

7 Cho dãy A gồm N số Viết thuật toán tìm hoán vị {X1, X2, , Xn} của tập {1, 2, , n} sao choA[X1] <= A[X2] <= <= A[Xn]

Khai báo cấu trúc:

Trang 16

if ( i == N )

Kiểm Tra Mảng X ();

else { F[v]= 1;

Xác định giá trị phần tử X[ i + 1];F[v]= 0;

}}

Trang 17

Khai báo cấu trúc:

Tìm số tờ mệnh giá A[1] đổi số tiền M;

In nghiệm tối ưu chứa trong mảng Y;

Trang 18

if (M – A[i]*j == 0)

Cập nhật lời giải tối ưu();

else {

Tìm số tờ mệnh giá A[i+1] đổi số tiền (M – A[i]*j);

X[i]=0;

}}

Y = X;

D = S;

}}

9 Có N phòng học, được đánh số từ 1 đến N, phòng học thứ i có sức chứa là P[i] sinh viên; và

K lớp học (K<=N), được đánh số từ 1 đến K, lớp học thứ j có số sinh viên là L[j] Phòng đàotạo cần xếp phòng cho các lớp, mỗi lớp 1 phòng Khai báo cấu trúc dữ liệu và viết thuật giảichọn ra K phòng để xếp cho các lớp, sao cho tổng số chỗ trống của các phòng được chọn lànhỏ nhất Cho biết các phòng đó là những phòng nào, lớp được xếp tương ứng cho mỗiphòng

Khai báo cấu trúc:

Trang 19

if ( i == K )

Cập nhật lời giải tối ưu;

else { F[v]= 1;

Trang 20

Chọn phòng cho lớp thứ ( i + 1 );

F[v]= 0;

}}

Y = X;

D= S;

}}

10.Tại một kho chứa hàng có N khu vực, mỗi khu vực được đánh số từ 1 đến N, khu vực thứ i

có sức chứa là V[i] container Người ta cần chất M container vào các khu vực này Khai báocấu trúc dữ liệu và viết thuật giải chọn ra các khu vực được dùng để xếp M container saocho phần còn trống sau khi đã xếp M container ở các khu vực đó là ít nhất

Khai báo cấu trúc:

Trang 21

c Mảng X[1 N]: chứa dãy nhị phân xác định khu vực được chọn

d D : Số chổ trống theo phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

{

Nhập Mảng V[1 N];

Nhập( M );

Chỉ định trạng thái chọn của khu vực 1;

In lời giải tối ưu dựa trên mảng Y;

Trang 22

else

S+=B[X[j]];

if (S > M && S-M<D) {

Y = X;

D= S-M;

}}

11.Trong một kho hóa chất hiện có N thùng chứa cùng một loại dung dịch Thùng thứ i hiệnchứa A[i] lít dung dịch Do các thùng chứa đã cũ, nên người ta cần bỏ một số thùng cũ vàchứa dung dịch sang những thùng chứa mới Hãy xác định số thùng cũ nhiều nhất cần loại

bỏ sao cho dung dịch của các thùng đó được đổ đầy vào các thùng chứa mới Biết rằng, sốthùng mới không hạn chế và mỗi thùng đều có dung tích là M lít

Khai báo cấu trúc:

c Mảng X[1 N]: chứa dãy nhị phân xác định thùng cũ cần loại bỏ

d D : Số thùng cũ theo phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

{

Nhập Mảng A[1 N];

Nhập( M );

Chỉ định trạng thái loại bỏ của thùng thứ (1) ;

In lời giải tối ưu dựa trên mảng Y;

}

Trang 23

Thuật giải: Chỉ định trạng thái loại bỏ của thùng thứ (i)

{

for (int v =0; v<= 1; v++){

Thuật giải: Cập nhật lời giải tối ưu

Y = X;

D= S/M;

}}

12.Một dãy N số (X1 X2…XN) là một hoán vị hoàn toàn của các số từ 1 đến N nếu nó là một hoán

vị và thỏa mãn điều kiện Xi≠ i với ∀i : 1 ≤ i ≤ N Khai báo cấu trúc dữ liệu và viết thuật giảiliệt kê tất cả các hoán vị hoàn toàn của các số từ 1 đến N

Trang 24

Khai báo cấu trúc:

X[ i ] = v;

if ( i == N ) {

for(int j =1; j<=N; j++) Xuất (X[j]);

}

Trang 25

else {

F[v]= 1;

Xác định giá trị phần tử X[i + 1];

F[v]= 0;

}}

}

13.Có N thành phố được mã hóa bằng các số từ 1 đến N, chi phí đi từ thành phố i đến thànhphố j là C[i, j] với 1≤ i, j ≤ n Một người đang ở thành phố có mã số 1, muốn đi qua cácthành phố khác và kết thúc tại thành phố có mã số N Khai báo cấu trúc dữ liệu và viết thuậtgiải xác định danh sách các thành phố phải đi qua sao cho tổng chi phí theo hành trình này

là ít nhất và trên hành trình đó không được đi qua một thành phố nào đó quá 1 lần

Khai báo cấu trúc:

Input:

a Mảng C[1 N,1 N]: chứa chi phí

Output:

b Mảng Y[1 N] : chứa hành trình được chọn tối ưu

c D : Chi phí theo phương án tối ưu;

Thuật giải: Khởi tạo giá trị ban đầu

{

Nhập Mảng C[1 N, 1 N];

Trang 26

if ( i == n-1 )

Cập nhật lời giải tối ưu;

else {

F[ v ] = 1;

Chọn thành phố cho lần đi thứ ( i + 1 );F[ v ] = 0;

}}

Trang 27

D= S;

}}

14.Viết thuật toán tìm tập hợp các dấu '+’, ‘-‘ và không dấu giữa dãy số 123456789 sao chođược một biểu thức có giá trị bằng một số nguyên N cho trước

Khai báo cấu trúc:

Input:

a Số nguyên N;

Output:

b Mảng X[1 8]: chứa dãy số -1, 0, 1 ứng với dấu trừ; không dấu và dấu cộng

Thuật giải: Khởi tạo giá trị ban đầu

Ngày đăng: 19/11/2017, 20:45

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w