Algorithm: ComputingDSS (n, q,ρ)
 
procedure RecPartition(n, B, N )
       if n = 0
              then if  N=q+1  and   2*i≠j ai * aj (n-1)* ρ
                       then for  Q1 in U   and | Q1 | = a1
                               do for  Q2 in U \ Q1  and  | Q2 | = a2
                                          do for  Q3 in U \ (Q1Q2)  and  | Q3 | = a3
                                                      ...
                                               do for  Qq in U \ (Q1Q2...Qq-1 ) and  | Qq | = aq
                                                       doM { a – b ( mod n ) | a∈Qi , b∈Qj , i≠j}
                                                    ifM is DSS
                                                    then return ( [Q1 , ..., Qq ] )
        else for i 1 tomin (B, n)
               do  aN+1 i
                           RecPartition( n-i, i, N+1)
 
 
main
    U ← {1, 2, ... , n}
    r ← Ceiling(Sqrt ( (q * n * ρ)/ (q -1) ) )
     RecPartition(r, r, 0)