Samchon Framework for CPP  1.0.0
CombinedPermutationGenerator.cpp
1 #include <samchon/library/CombinedPermutationGenerator.hpp>
2 
3 using namespace std;
4 using namespace samchon::library;
5 
6 CombinedPermutationGenerator::CombinedPermutationGenerator(size_t n, size_t r)
7  : super(n, r)
8 {
9  this->size_ = (size_t)pow(n, r);
10 
11  dividerArray.assign(r, NULL);
12  for (size_t i = 0; i < r; i++)
13  {
14  size_t x = r - (i + 1);
15  dividerArray[i] = (size_t)pow(n, x);
16  }
17 }
18 auto CombinedPermutationGenerator::operator[](size_t x) const -> vector<size_t>
19 {
20  vector<size_t> row(r_, 0);
21  for (size_t i = 0; i < row.size(); i++)
22  row[i] = (x / dividerArray[i]) % n_;
23 
24  return row;
25 }
Definition: RWMutex.hpp:4
size_t size_
Size, the number of all cases.
Package of libraries.
Definition: library.hpp:84
size_t r_
R, size of elements of each case.
size_t n_
N, size of the candidates.
auto r() const -> size_t
Get size of the R.
virtual auto operator[](size_t) const -> std::vector< size_t > override
Get x&#39;th case.