Problem Statement
Note that the memory limit for all tasks in this SRM is 256 MB.
Fox Ciel has a matrix A that consists of N rows by M columns.
Both N and M are even.
Each element of the matrix is either 0 or 1.
The rows of the matrix are numbered 0 through N-1 from top to bottom, the columns are numbered 0 through M-1 from left to right.
The element in row i, column j is denoted A(i, j).
You are given a
A palindrome is a string that reads the same forwards and backwards. For example, "1001" and "0111001110" are palindromes while "1101" and "000001" are not.
Some rows and some columns in Ciel's matrix may be palindromes. For example, in the matrix below both row 0 and column 3 are palindromes. (Row 0 is the palindrome "0000", column 3 is the palindrome "0110".)
0000 0011 0111 1110
You are also given two
Definition
- Class:
- PalindromeMatrixDiv2
- Method:
- minChange
- Parameters:
- String[], int, int
- Returns:
- int
- Method signature:
- int minChange(String[] A, int rowCount, int columnCount)
- (be sure your method is public)
Constraints
- N and M will be between 2 and 8, inclusive.
- N and M will be even.
- A will contain N elements.
- Each element of A will contain M characters.
- Each character of A will be either '0' or '1'.
- rowCount will be between 0 and N.
- columnCount will be between 0 and M.
Examples
{"0000" ,"1000" ,"1100" ,"1110"}
2
2
Returns: 1
An optimal solution is to change A(3, 0) to 0. Then we will have palindromes in two rows (0 and 3), and in two columns (0 and 3).
{"0000" ,"1000" ,"1100" ,"1110"}
3
2
Returns: 3
This is similar to the previous example, but in this case we must have three row palindromes. An optimal solution is to change A(1, 0), A(2, 0) and A(3, 0) to 0.
{"01" ,"10"}
1
1
Returns: 1
{"1110" ,"0001"}
0
0
Returns: 0
Here, we do not have to change A at all.
{"01010101" ,"01010101" ,"01010101" ,"01010101" ,"01010101" ,"01010101" ,"01010101" ,"01010101"}
2
2
Returns: 8
{"00", "10"}
2
1
Returns: 1
{"1000", "0001"}
2
4
Returns: 2
{"011011", "001111"}
1
3
Returns: 2
{"11", "01", "01", "00"}
3
2
Returns: 4
{"0010", "0111", "0111", "1000"}
2
1
Returns: 2
{"001101", "101111", "100111", "100111"}
4
4
Returns: 6
{"11", "11", "00", "10", "00", "10"}
2
1
Returns: 2
{"0111", "0111", "0100", "0101", "1111", "0000"}
1
3
Returns: 3
{"100100", "111110", "000001", "100100", "100010", "011110"}
3
3
Returns: 5
{"11111011", "10111101"}
1
4
Returns: 0
{"00", "10", "11", "00", "00", "10", "00", "00"}
2
2
Returns: 2
{"11111001", "11111111", "11111010", "01101110"}
3
3
Returns: 3
{"1101", "0000", "0100", "0101", "0101", "0101", "1001", "0001"}
2
3
Returns: 3
{"11111111", "11111111", "10110111", "10111111", "00110100", "01111011"}
2
5
Returns: 3
{"101010", "100000", "000100", "010000", "001001", "100000", "111111", "110000"}
3
6
Returns: 13
{"00010001", "00000100", "00000011", "00100000", "11110001", "10110100", "11101100", "01100101"}
0
0
Returns: 0
{"11001110", "11101010", "10010110", "00111010", "00111100", "00110101", "01101100", "01110101"}
8
0
Returns: 19
{"10010111", "01011000", "10011111", "11110011", "01010101", "11011111", "00011101", "10010111"}
0
8
Returns: 8
{"00110111", "11110111", "11011101", "11001000", "01110100", "01101001", "00110100", "11101001"}
8
8
Returns: 25
{"00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000"}
2
6
Returns: 0
{"00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000", "00000000"}
3
6
Returns: 0
{"11111111", "11111111", "11111111", "11111111", "11111111", "11111111", "11111111", "11111111"}
6
5
Returns: 0
{"11111111", "11111111", "11111111", "11111111", "11111111", "11111111", "11111111", "11111111"}
3
5
Returns: 0
{"10001110", "11100110", "11001111", "01100100", "00100000", "01110110", "10001101", "11111111"}
5
7
Returns: 13
{"11101101", "10000100", "11100101", "01000111", "00101010", "10000110", "10110110", "01000011"}
6
8
Returns: 17
{"00000011", "00001001", "11100111", "00010101", "01010100", "11001001", "00101011", "10101111"}
8
8
Returns: 22
{"11110100", "00001000", "11100010", "10011011", "11001000", "01100011", "10011101", "11111001"}
5
6
Returns: 10
{"10111100", "00101100", "00110110", "00110101", "01100011", "01011110", "11000101", "00100000"}
3
5
Returns: 8
{"01000001", "10001111", "11000100", "11101110", "00111101", "10101110", "10101101", "11011011"}
5
5
Returns: 10
{"11011101", "11000001", "10101100", "10110110", "01111110", "11100100", "10010110", "01111100"}
6
6
Returns: 13
{"10111011", "01010101", "10100110", "00001111", "01100110", "01111011", "10111101", "01010001"}
6
8
Returns: 19
{"00110001", "10011011", "00010000", "11000011", "10111000", "11001000", "10001110", "01001101"}
3
8
Returns: 18
{"10111100", "01110001", "11100001", "00011101", "10100010", "00011001", "01001100", "01111110"}
6
5
Returns: 13
{"10011101", "00001111", "01000110", "00111101", "10100010", "00001110", "11100010", "01100011"}
8
7
Returns: 23
{"11010101", "00000100", "00101111", "01000010", "11110110", "10111001", "01111000", "10011010"}
7
6
Returns: 15
{"10010111", "10001100", "11100111", "00001001", "00101011", "00011111", "10011001", "11010011"}
8
8
Returns: 18
{"00101001", "00011111", "00011010", "10111101", "01111110", "00001101", "10011111", "01100101"}
8
7
Returns: 18
{"00000111", "10100001", "00100101", "10100010", "10001110", "01100110", "01100010", "00111010"}
6
7
Returns: 18
{"10000010", "10110101", "01110000", "10100100", "11110110", "01001001", "11010000", "10110100"}
6
6
Returns: 16
{"01000011", "01000100", "11111111", "01101010", "01001111", "10100111", "01111011", "10110000"}
7
6
Returns: 15
{"00000111", "11000011", "10100100", "11010011", "01001000", "00101101", "01011010", "10011000"}
7
7
Returns: 17
{"11011011", "00100111", "10110000", "11001001", "11011000", "10101100", "01001110", "01011110"}
6
7
Returns: 13
{"11110101", "00110100", "11110000", "10101001", "11111110", "11111111", "00011100", "00111000"}
8
8
Returns: 16
{"00100100", "01111110", "00111100", "00111100", "00111100", "00111100", "01111110", "00100100"}
4
4
Returns: 0
{"00000000", "11000111", "11111111", "00100100", "11100100", "11111111", "11100111", "00000000"}
4
4
Returns: 0
{"01100010", "10111101", "11011001", "11010101", "10111101", "10011000", "10111101", "01100110"}
4
4
Returns: 1
{"00000001", "01010111", "11110101", "11011011", "11011011", "11011101", "11000001", "10000001"}
4
4
Returns: 2
{"11001001", "11000100", "01111111", "11111111", "11111110", "01111110", "00000100", "00001001"}
4
4
Returns: 2
{"11110110", "01010010", "10111101", "01011110", "01000010", "11011001", "01011010", "01001011"}
4
4
Returns: 3
{"00011001", "01000011", "11000011", "01101001", "10010000", "01110010", "11000010", "10100001"}
4
4
Returns: 6
{"01100100", "10000110", "01001011", "01010011", "11000000", "11000011", "01000110", "00111001"}
4
4
Returns: 5
{"01001011", "00001100", "01100000", "10101000", "00111000", "01011111", "00101000", "11000011"}
4
4
Returns: 6
{"01111111", "10000000", "11101000", "01001011", "01011100", "00101110", "01000011", "01111110"}
4
4
Returns: 4
{"00001111", "01010101", "10010110", "01110001", "10001110", "01101001", "10101010", "11110000"}
6
6
Returns: 28
{"01101001", "00001111", "11110000", "11101000", "00010111", "00001111", "11110000", "10010110"}
6
6
Returns: 28
{"10010110", "11110000", "00110011", "11110000", "00001111", "11001100", "00001111", "01101001"}
6
7
Returns: 30
{"01001101", "11110000", "01010101", "00010111", "11101000", "10101010", "00001111", "10110010"}
6
7
Returns: 30
{"11110000", "10001110", "01110001", "00001111", "11110000", "10001110", "01110001", "00001111"}
7
6
Returns: 30
{"10110010", "01001101", "11101000", "11001100", "00110011", "00010111", "10110010", "01001101"}
7
6
Returns: 30
{"01010101", "01010101", "01010101", "01010101", "01010101", "01010101", "01010101", "01010101" }
2
2
Returns: 8
{"0000", "1000", "1100", "1110" }
2
2
Returns: 1
{"1010", "0000", "0110", "1100" }
4
4
Returns: 6
{"10100110", "11111111", "00000000", "10101010", "01010101", "11110000" }
6
8
Returns: 14
{"111111", "111111", "111111", "111111", "111111", "111111" }
0
0
Returns: 0
{"10", "01", "10", "11" }
2
2
Returns: 3
{"11", "01", "00", "10" }
4
2
Returns: 2
{"01010101", "01010101", "01010101", "01010101", "01010101", "01010101", "01010101", "11111111" }
3
8
Returns: 12