• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

bài toán khó về liệt kê dã số các pro giúp em với

Đây là nơi để các bạn trao đổi về cấu trúc dữ liệu và giải thuật

Điều hành viên: Điều hành

thanhthuy40
Thành viên chính thức
Thành viên chính thức
Bài viết: 32
Ngày tham gia: CN 17/05/2009 12:17 am
Đến từ: Daklak
Has thanked: 3 time

bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi thanhthuy40 » T.Tư 01/01/2014 2:20 pm

cho 1 mảng 6 phần tử

A = Array("1", "2", "3", "4", "5", "6", "7")

Liệt kê ra các số có chiều dài từ 1 đến 4 chữ số với điều kiện không được đảo lộn các số trong dãy

vd: đã lấy ra số là 123 => các số 213, 231 không cần lấy

Em mo hồ quá không biết phải viết thế nào :D



hvcuongit
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 53
Ngày tham gia: CN 24/01/2010 6:09 pm
Has thanked: 1 time
Been thanked: 6 time

Re: bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi hvcuongit » T.Năm 02/01/2014 2:39 pm

Thuật toán mình nghĩ như thế này:
- Đầu tiên bạn phải liệt kê ra tất cả các số có thể có(theo điều kiện bạn đưa ra) rồi bạn đưa từng số đã tìm được vào một mảng kiểu string chẳng hạn.
- Tiếp theo bạn dùng vòng lặp để duyệt các phần tử trong mảng đã tìm được rồi so sánh từng phần tử 1
Ví dụ: Bạn có mảng tìm được là: A = Array("111", "112", "121", "122", "221",....vv)
Bây giờ bạn phải dùng 2 vòng lặp để get được 2 phần tử khác nhau trong mảng này, tiếp đến bạn phải so sánh từng kí tự phần phần tử này với phần tử kia. Nếu trùng lặp thì loại nó ra, kết quả bạn sẽ có được các số mà bạn mong muốn
p/s: Bạn có thể sùng StringBuilder để so sánh sẽ nhanh hơn .

thanhthuy40
Thành viên chính thức
Thành viên chính thức
Bài viết: 32
Ngày tham gia: CN 17/05/2009 12:17 am
Đến từ: Daklak
Has thanked: 3 time

Re: bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi thanhthuy40 » T.Năm 02/01/2014 7:10 pm

Không ý em là như thế này cơ
VD: mảng A = Array("1", "2", "3", "4")
lấy ra các số có chiều dài từ 1 đến 3 chữ số ( không được dùng lại item của nhau)

kết quả sai:
ketqua = Array(1,2,3,4...23, 32, 444) ==> (sai ở chõ 32, 444) (vd 32 sai là vi đã có 23 rồi)

kết quả đúng:
ketqua = Array (1, 2, 3, 4, 12, 13, 14, 23, 24, 34, 123, 124, 134, 234)

đây chỉ là vd thôi nhá chứ mảng mà em cần lấy nó như thế này cơ Array("A", "B", "C", "D", "A", "C", "A", "A", "E")

mrhuavn
Bài viết: 9
Ngày tham gia: T.Hai 18/08/2014 10:53 pm

Re: bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi mrhuavn » T.Ba 19/08/2014 3:36 am

có cách nào đó nhanh và gọn lắm nhưng tôi tìm mãi trong máy khong thấy đâu, bạn dùng tạm phương pháp hơi ngu nhưng được, từ 1 đến 1234567 lấy hết nhưng gì nhỏ hơn 4567, tìm và bỏ những reverstring, bỏ những số có số cuối cùng < = số sát nút

Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 792
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi xuanquy_th » T.Năm 21/08/2014 12:00 pm

B1. Tạo 1 mảng tương đương vị trí (Mảng này được đảo lộn các số trong dãy)
B2. Duyệt trên mảng được đảo lộn và lấy vị trí tương ứng ở mảng gốc
===> Kết quả
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

mrhua1
Bài viết: 8
Ngày tham gia: CN 03/05/2015 5:14 pm

Re: bài toán khó về liệt kê dã số các pro giúp em với

Gửi bàigửi bởi mrhua1 » T.Tư 13/05/2015 6:26 pm

hơi dễ
cho mot list vào ngồi "làm cảnh"
truoc khi cho vao array kiem tra trong list bang count list
neu khong co thi moi cho vao array và đồng thời add vào list
xong roi bo list di.. có thích thì đến xyz cũng được


Quay về “Cấu trúc dữ liệu và giải thuật”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách