Given an $n \times n$ matrix $A$ with $0-1$ entries, I want to maximize $\sum\limits_{i \in I, j \in J} a_{ij}$ subject to $|I| = |J| = k.$
I expect the problem to be NP-hard, so I want a polynomial time approximation that gets you within a constant factor $c$ of the maximum the same way there is one for the cut norm, which is the same problem except we don't enforce $|I| = |J|.$
If $k \ge n/2,$ I can get $c \ge 1/2$ by taking the $k$ rows with maximum sum, then the $k$ subcolumns of those rows with maximum sum. In general, I can get $c \ge k/n.$
The following algorithm gets $c \ge 1/k$: For a list $L,$ let $f(L)$ be the sum of the $k$ largest entries of $L.$ Let the columns of $A$ be $a_1, \dots, a_n,$ pick $b_1, \dots, b_k$ for which $f(a_{b_i})$ are the largest $k$ values among $f(a_1), \dots, f(a_n),$ and then pick the $k$ subrows of $a_{b_1}, \dots, a_{b_k}$ with maximum sum.
Both the factors of $k/n, 1/k$ are tight as demonstrated by the worst case. Thus, we have an algorithm which is good unless $k = o(n),$ and one which is good when $k = o(1).$ What do we do about the middle, when $k = \sqrt{n}$ for example?