Perl 6, 5050 49 bytes
{max map *>>*.&map({.[$++;$^b][$++]}).sum,permutations ^.[0][Z] $_}
Decently short, even despite the long permutations
call. This is an anonymous code block that takes a list of lists and returns a number.
Explanation:
{ } # Anonymous code block that
max # Finds the maximum
permutations # Of all permutations
^.[0] [Z] $_ # Of the range 0 totransposed n-1input
map # When mapped to
.sum # The sum of
*>>*.&map({ .[$++]} ) # For eachThe elementdiagonal of the permutations
.[$++;$^b] # That index in each successive list in the inputmatrix