bài toán trò chơi với số:

H

hai6f2009

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Hôm nay là chủ nhật ở nhà rảnh rỗi hai bạn An và Tâm cùng nhau chơi trò chơi như sau: An viết ra một số nguyên gồm N chữ số, nhiệm vụ của Tâm là phải thu được số lớn nhất có thể sau khi đã xoá đi K chữ số. Tâm đang loay hoay không biết làm thế nào, bạn hãy giúp Minh thực hiện được nhiệm vụ của bạn ấy nhé.
- Input: File DIGIT.INP
+ Dòng đầu tiên chứa hai số nguyên N và K (1 ≤ K < N ≤ 500 000). Dòng tiếp theo chứa một số nguyên có N chữ số, không bắt đầu bằng chữ số 0.
- Output: File DIGIT.OUT
Ghi ra một số nguyên duy nhất là số lớn nhất mà Minh có thể thu được bằng cách xoá K chữ số từ số đã cho.
Ví dụ:
Input
4 2
1924
Output
94
Input
7 3
1231234
Output
3234
Input
10 4
4177252841
Output
775841
 
T

thienvamai

Tham lam: cứ gặp 1 số thì xóa tất cả các số to hơn nó ở trong dãy, đến khi nào hết lượt xóa thì thôi
 
E

englandhuynh

Bài toán này là tìm n-k số trong dãy số đã cho là lớn nhất. Thuật là :ta sẽ lần lượt lựa chọn các phần tử trong dãy đã cho bằng cách lấy phần tử max trong khoảng từ vị trí của phần tử trước + 1 đến vị trí (k+số phần tử đã tìm được)

@Thienvamai: mình không hiểu thuật của bạn lắm ? Bạn nói rõ hơn đi !
 
E

englandhuynh

Bài toán này là tìm n-k số trong dãy số đã cho là lớn nhất. Thuật là :ta sẽ lần lượt lựa chọn các phần tử trong dãy đã cho bằng cách lấy phần tử max trong khoảng từ vị trí của phần tử trước + 1 đến vị trí (k+số phần tử đã tìm được)

@Thienvamai: mình không hiểu thuật của bạn lắm ? Bạn nói rõ hơn đi !
 
T

thienvamai

thuật tham làm là sao vậy bạn? mình chưa học? có cách khác không?
Greedy là thuật toán thể hiện sự tham lam, nghĩ là tìm cách tham ô càng nhiều càng tốt hi vọng ra được kết quả tốt nhất
Bài toán này là tìm n-k số trong dãy số đã cho là lớn nhất. Thuật là :ta sẽ lần lượt lựa chọn các phần tử trong dãy đã cho bằng cách lấy phần tử max trong khoảng từ vị trí của phần tử trước + 1 đến vị trí (k+số phần tử đã tìm được)

@Thienvamai: mình không hiểu thuật của bạn lắm ? Bạn nói rõ hơn đi !
với 1 dãy số ví dụ[TEX] a_1a_2...a_n[/TEX] nếu bạn phải xóa đi vài phần tử để được số lớn nhất
với mỗi số [TEX]a_i [/TEX] thì bạn luôn có 2 lựa chọn xóa hoặc ko xóa, đương nhiên nếu [TEX]a_i < a_{i+1}[/TEX] việc chọn xóa phần tử [TEX]a_i [/TEX] là lựa chọn đúng đắn để đưa đến 1 kết quả cao.
 
Last edited by a moderator:
Top Bottom