Ghép Các Số Cho Trước để được Số Lớn Nhất - Dạy Nhau Học Trang chủ » Ghép Số C++ » Ghép Các Số Cho Trước để được Số Lớn Nhất - Dạy Nhau Học Có thể bạn quan tâm Ghép Số điện Thoại Vào ảnh Ghép Số Dư Mb Bank Ghép Số Dư Tài Khoản Ghép Số Dư Tài Khoản Mb Ghép Số Dư Tài Khoản Mb Bank Ghép các số cho trước để được số lớn nhất programming algorithm Duc_Khai_Tong (da sun kid) November 15, 2018, 4:04pm #1 em/mình có bài tập như này: Cho một dãy gồm n số nguyên không âm, bạn hãy viết chương trình sắp xếp dãy số này sao cho khi nối các số lại với nhau thì ta thu được một số nguyên có giá trị lớn nhất. ps: Em/mình đã làm được nhưng phải dùng đến hàm sort. Mọi người cho một ý tưởng “sơ cấp” đi ạ. Bài tập trong phần thuật toán nên em/mình muốn có một cách tư duy khác Ghép các số lại với nhau để tạo ra số lớn nhất có thể Lỗi "storage size of 'a' isn't known" khi khi báo mảng rogp10 (rogp10) November 15, 2018, 2:56pm #2 Vui lòng thêm categories vào nhé 2 Likes Duc_Khai_Tong (da sun kid) November 15, 2018, 3:04pm #3 dạ vâng, lần sau e nhớ. Pham_Hoai_Nam (!isProgrammer) November 15, 2018, 3:12pm #4 Sắp xếp từ lớn đến bé Duc_Khai_Tong (da sun kid) November 15, 2018, 3:14pm #5 mình chưa hiểu ý tưởng của bạn Pham_Hoai_Nam (!isProgrammer) November 15, 2018, 3:17pm #6 Sắp xếp các số vừa nhập vd: 1,3,2 thành 3,2,1 thì nối 3 số đó vào sẽ ra số nguyên lớn nhất 1 Like noname00 (HK boy) November 15, 2018, 3:19pm #7 Cẩn thận ghép một số trường hợp, như 2 và 20. Dù 20 > 2 nhưng ghép 2|20 lợi hơn 20|2. Không phải cứ sắp xếp giá trị số thông thường là xong. Bạn nhìn trường hợp mình chỉ ra rồi suy nghĩ thêm nhé. 2 Likes Duc_Khai_Tong (da sun kid) November 15, 2018, 3:19pm #8 bạn hiểu sai đề rồi, là số chứ không phải chữ số 1 Like Pham_Hoai_Nam (!isProgrammer) November 15, 2018, 3:21pm #9 bước đầu các số vừa nhập sẽ chuyến sang string rồi tách các chữ số ra từ string đó sắp xếp bình thường noname00 (HK boy) November 15, 2018, 3:21pm #10 Ai cho tách mà tách. 1 Like noz1995 (Trần Hoàn) November 15, 2018, 3:23pm #11 Sắp xếp các số theo độ lớn của chữ số đầu tiên. Nếu chữ số cao nhất nhỏ hơn thì so đến chữ số cao thứ 2… Nếu một số mà bắt đầu bằng một số khác thì so sánh chữ số đầu tiên của số bên trong với chữ số đầu tiên của phần thừa ở số bên ngoài, nếu chữ số đầu tiên ấy cũng bằng thì so tiếp chữ số thứ 2 với chữ số thứ 2 của phần thừa… Ví dụ 2, 6, 12, 32, 26, 25, 254, 555, 257, 251 ta sẽ sắp xếp: 6, 555, 32, 26, 257, 254, 25, 251, 2, 12. Số thu được là 6555322625725425251212 3 Likes Duc_Khai_Tong (da sun kid) November 15, 2018, 3:22pm #12 nếu biết cách xếp 2 số thì có xếp được một dãy không a. e thấy xếp dãy nó phức tạp hơn nhiều quá noname00 (HK boy) November 15, 2018, 3:23pm #13 Được. Cơ bản vẫn là tiêu chí nào để quyết định số nào đứng trước số nào thôi. Tất cả nằm trong điều kiện if. 1 Like Duc_Khai_Tong (da sun kid) November 15, 2018, 3:23pm #14 em cũng nghĩ đến ý tưởng này rồi, nhưng code thì không code được ;( noz1995 (Trần Hoàn) November 15, 2018, 3:25pm #15 Tách thành các chuỗi rồi so sánh ký tự tương ứng vị trí thôi bạn rogp10 (rogp10) November 16, 2018, 2:51am #16 Mô tả vậy khó lắm ghép thử như @noname00 là đúng rồi. 2 Likes urek-mazino (Đỗ Đăng Khôi) November 16, 2018, 1:06am #17 #include <iostream> #include <algorithm> #include <string> #define SIZE 5 using namespace std; int main() { // Test case int A[SIZE] = {1, 20, 3, 4, 22}; // Chuyển Test case từ int[] -> string[] string T[SIZE]; for(int i = 0; i < SIZE; ++i) T[i] = to_string(A[i]); // Sắp xếp mảng T thep thứ tự từ điển // Sử dụng giải thuật sắp xếp nổi bột for(int i = 0; i < SIZE; ++i) for(int j = SIZE - 1; j > i; --j) if(T[j].compare(T[j - 1]) == 1) { swap(T[j], T[j - 1]); } // In kết quả for(int i = 0; i < SIZE; ++i) cout << T[i]; } htwap (lu___va_sa__) November 16, 2018, 1:20am #18 a = [1, 20, 2, 3, 30] a.sort! do |x, y| x = x.to_s y = y.to_s if x.length < y.length x = x + y[0...(y.length - x.length)] elsif y.length < x.length y = y + x[0...(x.length - y.length)] end y <=> x end p a # => [3, 30, 2, 20, 1] mình code ruby, không biết thế này có đúng k nữa đại loại thì thuật toán của mình là dùng hàm sort với hàm so sánh custom lại, khi so sánh 2 số thì mình sẽ xét xem số nào đứng trước sẽ được số lớn hơn bằng cách chuyển 2 số thành chuỗi rồi lấy phần đầu của chuỗi dài hơn nối vào phần đuôi của chuỗi ngắn hơn sao cho độ dài 2 chuỗi bằng nhau, sau đó so sánh 2 chuỗi đó. 1 Like tntxtnt () November 16, 2018, 4:49am #19 bài này quen quen hình như có ai hỏi rồi Cách giải đơn giản ko ngờ std::sort(begin(arr), end(arr), [](int a, int b) { auto aa = std::to_string(a); auto bb = std::to_string(b); return aa + bb > bb + aa; }); edit cái dấu > mới đúng 4 Likes rogp10 (rogp10) November 16, 2018, 3:12am #20 Nên đổi hết ra string rồi mới dồn vào mảng 2 Likes next page → DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Ghép Số C++ Giải Quyết Bài Toán Ghép Số để được Số Lớn Nhất Như Thế Nào? NUMTRANS - Trò Chơi Ghép Số - Luyện Code Ghép Số Lớn Nhất - DMOJ: Modern Online Judge - ub PTIT015A - ACM PTIT 2015 A - Ghép Số NUMCON - VNOI Ghép Nối Mảng Trong C++ GHÉP SỐ LỚN – NUMCON – SPOJ | LÀM HẾT MÌNH Ghép Hai Chữ Số Thành Số Có 2 Chữ Số Lớn Nhất Ghép Số Lớn (NUMCON) | Trái Táo đỏ Giải Quyết Bài Toán Ghép Số để được Số Lớn Nhất ... Problem NUMCON MERGENUM - Ghép Số - NTUCoder - Bài Tập