Mình vô tình thấy câu đố này, mọi người cũng giải quyết cùng mình xem sao?
Cần sinh ngẫu nhiên N phần tử có giá trị từ 0 đến (N-1). Vấn đề là khi dùng hàm sinh ngẫu nhiên có thể sinh ra một số đã được sinh ở lần trước, khi đó lại gọi hàm ngẫu nhiên cho đến khi nào sinh được một phần tử không nằm trong danh sách đã sinh ra trước đó.
Vậy cần có một mảng lưu danh sách các phần tử đã được sinh, mảng này nếu khai báo thông thường thì phải chứa N phần tử.
Chẳng hạn cần sinh ngẫu nhiên 6 phần tử từ 0 đến 5; để biết đã sinh được bao nhiêu phần tử thì ta cần một mảng có 6 phần tử. Lý do dùng mảng chứ không dùng danh sách liên kết vì tốc độ truy cập của mảng nhanh chóng hơn DSLK nhiều.
Câu hỏi, mảng này có thể giảm xuống còn bao nhiêu phần tử nữa mà vẫn lưu trữ đủ danh sách N số đã được sinh ngẫu nhiên.