Well, I will not buy this homework. Here is the solution. Let k = 3, N = 5
Start:
ar[0] = 0
ar[1] = 0
ar[2] = 0
ar[3] = 0
ar[4] = 0
Create a random number. Suppose we need to store two bits of information:
- "2" is the first random number.
- "2".
So we do the following:
ar[0] = 2
ar[1] = 0
ar[2] = 10 // 10 is any number that larger than N.
ar[3] = 0
ar[4] = 0
next number: 4
ar[0] = 2
ar[1] = 4
ar[2] = 10 // taken
ar[3] = 0
ar[4] = 10 // taken
: 2
ar[2] >= 10 thus taken, try another number
: 1
ar[0] = 2
ar[1] = 14 // added 10 to signify it taken
ar[2] = 11 // added 1 as it the current number
ar[3] = 0
ar[4] = 10 // taken
.
, 10 , 10.
ar[0] = 2
ar[1] = 4
ar[2] = 1
ar[3] = 0
ar[4] = 0
- , [1..N]. [0..N-1], .