Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- T det() const {
- assert(size().first == size().second);
- std::vector<int> perm(size().first);
- for (int i = 0; i < perm.size(); ++i) perm[i] = i;
- T ans = 0;
- while (true) {
- T add = 1;
- for (int i = 0; i < perm.size(); ++i)
- add *= this->operator()(i, perm[i]);
- for (int i = 0; i < perm.size(); ++i)
- for (int j = i + 1; j < perm.size(); ++j)
- if (perm[i] > perm[j]) add = -add;
- //for (auto i : perm) std :: cout << i << ' ';
- //std :: cout << add << '\n';
- ans += add;
- if (!next_permutation(perm.begin(), perm.end())) break;
- }
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement