30/09/2018, 18:18
Thuật toán liên quan đến random
Em có ví dụ như này: Có mảng A = {1,3,5,6};. Giờ lập một mảng B có 10 phần tử đều là của A, và phải có đầy đủ tất cả phần tử của A. Ko rõ e diễn đạt rõ ràng chưa. Các bác rảnh share e cái thuật toán với. Nghĩ mãi vẫn cứ lì não
Bài liên quan
mảng A có mấy phần tử bạn?
mảng A đã nếu trên rồi đó bạn. Example hard code luôn. Tổng quát sau
Ko biết đúng ý bạn ko :c
Đầu tiên random tất cả các phần tử của A vào B.
Sau đó random các số trong A vào chỗ trống còn lại là ok
Chưa chuẩn, Mình ví dụ trong cái B[rand() % B.size()] có thể random lặp, thì cái A[i] cũ thay bằng cái A[i] mới.
Thêm 1 if + while là đc rồi :c
Mình nghĩ chiến lược cho bài này là trước tiên là mình chọn ra 4 vị trí trước (để ném 4 thằng 1 3 5 6 vào trước đảm bảo có đủ phần tử của A) sau đó 6 vị trí còn lại thì ném lung tung thôi (mỗi vị trí còn lại có thể chọn phần tử nào cũng được).
tính thử thì có 10C4 * 4! * 4^6.
Mà không biết mảng A có phần tử trùng thì có sao không.
A ko có phần tử trùng. Mình cũng từng nghĩ cách ép đủ 4 phần tử đã, rồi random sau. Nhưng cảm giác kiểu như thê ko hoàn toàn là random nữa
Mình dùng NULL để mô tả v thôi ‘3’
Chứ 1 số ngôn ngữ sẽ hiểu NULL = 0 nên ko xài đc.
-> 1 là dùng số nào đó mà đề ko đụng vào để đánh dấu. (Ví dụ như mảng A toàn số lớn hơn 0 thì chọn đại 1 số âm)
2 là dùng mảng đánh dấu vị trí này đã có giá trị ^^.
Tks bác. e nghĩ là chuẩn rồi