Clearly the column and row counts alone isn't enough. Consider a 2x(2n) array (2 rows of 2xn columns) as described below:
Using A = |1|, B = |0|, build the array by randomly ordering n of each of A and B
Each possible array will have identical column and row counts:
| 1 | 1 | 1 | ... | 1 | 1 |
---|---|---|---| ... |---|---|
n | 0 | 1 | 1 | ... | 0 | 1 |
n | 1 | 0 | 0 | ... | 1 | 0 |
But there are C(2n,n) = (2n)!/(n!)^2 different such arrays.
This function grows fairly fast (first few values are 1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620, 184756, 705432, 2704156, 10400600, 40116600, 155117520, 601080390, 2333606220, 9075135300, 35345263800, 137846528820, 538257874440, 2104098963720,...) so you would need to add a lot more information to uniquely identify any such array. If you add more rows the problem only gets worse.
In answer to KevinOrr's question, all diagonals will be sufficient to solve for teh 2x(2n) array as described above. But I don't think they are enough for arrays with more rows.
To confirm that. Just consider mxm arrays with half of the elements set. So there will be (m^2)/2 set elements. The row count will consist of m integers that add to (m^2)/2, as will the column count and each of the two sets of TL-BR and TR-BL diagonal counts will be 2m elements with the same sum. Each of these counts is a partition of the number (m^2)/2, for example see http://en.wikipedia.org/wiki/Partition_(number_theory), broken into m parts for the row and column or 2m parts for the diagonal counts.
The number of possible partitions of n elements grows as ~exp[c*sqrt(n)] (for some constant c) and this is strictly greater than the number of partitions into some fixed k parts.
So the number of possible row,column plus diagonal partitions for the mxm problem (with (m^2)/2 elements set) is less than (exp[c*sqrt((m^2)/2)])^4 . i.e. it grows approximately as exp(m).
But the number of possible arrays of that form grows as ~ C(m^2,(m^2)/2) which, if you 'solve' using Sterling's approximation, seems to grow approximately as 2^(m^2) or exp[m^2].
So possible arrays grows as ~exp(m^2), which is much faster than the possible combinations of row/col/diag numbers which only grows as ~exp(m), and that won't be enough information to uniquely identify the array.