Giúp kiểm tra tính chính xác của ý tưởng

Các cao nhân xem ý tưởng e đúng không ạ và làm thế này có bị chạy quá thời gian ko ạ. Em cảm ơn


bước 1 lưu tất cả các chữ số vào một mảng

mảng ai 1 2 3 4 5 6 7

sắp xếp mảng a theo thứ tự giảm dần

lấy k phần tử đầu vào mảng xh lấy

lấy các phần tử còn lại vào mảng bj

mảng xh 7 6 5

s = xi*10+xi+1;

n = s*10+bj

cout << n;

Muốn biết ý tưởng đúng hay không, bạn hãy code thử và chạy thử 1 số bộ input xem.

2 Likes

Mình thấy rằng phần đầu: tách thành mảng ai -> sắp xếp-> tách ít nhất đã có 5 vòng for, không biết time AC của đề bài là bao nhiêu vậy? @vovanquoc

e ko bt anh ạ .em chụp trên mạng xuống lm thôi

ý e là ko bt thơi gian

Mình đồng ý với bước 1

bước 1 lưu tất cả các chữ số vào một mảng

Tuy nhiên bạn không nên sort, ít nhất trong trường hợp này nó không có tác dụng gì cả. Cái ví dụ của đề bài cho một số khá đẹp nên có thể bạn bị nhầm.

2 Likes

nhưng mục đích sort của mình để tìm k phần tử lớn nhất trong mảng bn à

Để cho bạn hiểu kỹ hơn, mình cho một ví dụ như sau: K = 1 và S= 97539.

2 Likes

Bạn tách mảng và sắp xếp là sai rồi, vì giới hạn k lần đổi chỗ, chưa chắc bạn đủ số lần để đạt đến số mà bạn đã sắp xếp.
Ý tưởng nhất thời của mình, hãy đưa chữ số lớn nhất về đầu, lớn nhì về vị trí 2,… đó là ưu tiên.

3 Likes

Về bài này bạn xem kĩ các thuật toán sắp xếp sẽ tìm thấy sự tương đồng.

3 Likes

Có thể áp dụng thuật toán: Sắp xếp lựa chọn (Selection Sort)
Bạn có thể google để tìm hiểu cách thức hoạt động của thuật toán này.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?