Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1.     T det() const {
  2.         assert(size().first == size().second);
  3.         std::vector<int> perm(size().first);
  4.         for (int i = 0; i < perm.size(); ++i) perm[i] = i;
  5.         T ans = 0;
  6.         while (true) {
  7.             T add = 1;
  8.             for (int i = 0; i < perm.size(); ++i)
  9.                 add *= this->operator()(i, perm[i]);
  10.             for (int i = 0; i < perm.size(); ++i)
  11.                 for (int j = i + 1; j < perm.size(); ++j)
  12.                     if (perm[i] > perm[j]) add = -add;
  13.             //for (auto i : perm) std :: cout << i << ' ';
  14.             //std :: cout << add << '\n';
  15.             ans += add;
  16.             if (!next_permutation(perm.begin(), perm.end())) break;
  17.         }
  18.         return ans;
  19.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement