<p>You are given an <code>m x n</code> binary matrix <code>matrix</code>.</p>

<p>You can choose any number of columns in the matrix and flip every cell in that column (i.e., Change the value of the cell from <code>0</code> to <code>1</code> or vice versa).</p>

<p>Return <em>the maximum number of rows that have all values equal after some number of flips</em>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> matrix = [[0,1],[1,1]]
<strong>Output:</strong> 1
<strong>Explanation:</strong> After flipping no values, 1 row has all values equal.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> matrix = [[0,1],[1,0]]
<strong>Output:</strong> 2
<strong>Explanation:</strong> After flipping values in the first column, both rows have equal values.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> matrix = [[0,0,0],[0,0,1],[1,1,0]]
<strong>Output:</strong> 2
<strong>Explanation:</strong> After flipping values in the first two columns, the last two rows have equal values.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>m == matrix.length</code></li>
	<li><code>n == matrix[i].length</code></li>
	<li><code>1 &lt;= m, n &lt;= 300</code></li>
	<li><code>matrix[i][j]</code> is either&nbsp;<code>0</code> or <code>1</code>.</li>
</ul>

class Solution {
public:
    int maxEqualRowsAfterFlips(vector<vector<int>>& matrix) {
        int i, j;
        int all_same_row;
        int max_all_same_row = 0;
        int row, col;
    
        row = matrix.size();
        col = matrix[0].size();

        string s[row];

        

        for (i = 0; i < row; i++) {
            s[i] = "";
            for (j = 0; j < col; j++) {
                if (matrix[i][j] == matrix[i][0]) {
                    s[i] += "1";
                }
                else {
                    s[i] += "0";
                }
            }
        }

        

        for (i = 0; i < row; i++) {   
            all_same_row = 0;            
            for (j = 0; j < row; j++) {
                if (s[j] == s[i]) {
                    all_same_row++;
                } 
            }
            if (all_same_row > max_all_same_row) {
                max_all_same_row = all_same_row;
            }
        }

        return max_all_same_row;
    }
};
73300