TL;DR: The maximum number of squares that can be covered by 4 queens on a 8x8 board is 62, achievable through 64 different board orientations. By "different" I mean that the mirror image/rotation of one of the orientations does not produce another that is counted.
I also used a brute-force approach, using the following Python 2.7 code:
from itertools import combinations as combs
def covered_set(row, col):
controlled = set()
for i in range(1,9):
controlled.add((row, i))
for i in range(1,9):
controlled.add((i, col))
x = 1
while row + x <= 8 and col + x <= 8:
controlled.add((row + x, col + x))
x += 1
x = 1
while row - x >= 1 and col - x >= 1:
controlled.add((row - x, col - x))
x += 1
x = 1
y = 1
while row + x <= 8 and col - y >= 1:
controlled.add((row + x, col - y))
x += 1
y += 1
x = 1
y = 1
while row - x >= 1 and col + y <= 8:
controlled.add((row - x, col + y))
x += 1
y += 1
return controlled
max_covered = 0
arrangement = []
for a,b,c,d in combs(range(64), 4):
row1, col1 = divmod(a, 8)
row2, col2 = divmod(b, 8)
row3, col3 = divmod(c, 8)
row4, col4 = divmod(d, 8)
controlled = len(covered_set(row1+1, col1+1) |
covered_set(row2+1, col2+1) |
covered_set(row3+1, col3+1) |
covered_set(row4+1, col4+1))
if controlled > max_covered:
max_covered = controlled
arrangement = [((row1+1, col1+1), (row2+1, col2+1), (row3+1, col3+1), (row4+1, col4+1))]
elif controlled == max_covered:
arrangement.append(((row1+1, col1+1), (row2+1, col2+1), (row3+1, col3+1), (row4+1, col4+1)))
print max_covered
for v in arrangement:
print v
Output:
62
((1, 1), (2, 5), (5, 8), (8, 2))
((1, 1), (2, 8), (5, 2), (8, 5))
((1, 1), (2, 8), (5, 4), (6, 5))
((1, 1), (3, 5), (5, 7), (7, 3))
((1, 1), (3, 7), (5, 3), (7, 5))
((1, 1), (4, 5), (5, 6), (6, 4))
((1, 1), (4, 5), (5, 6), (8, 2))
((1, 1), (4, 6), (5, 4), (6, 5))
((1, 2), (2, 6), (5, 1), (6, 5))
((1, 2), (4, 6), (5, 5), (8, 1))
((1, 2), (4, 8), (7, 5), (8, 1))
((1, 3), (2, 7), (5, 2), (6, 6))
((1, 3), (2, 7), (5, 2), (7, 5))
((1, 3), (3, 7), (5, 1), (7, 5))
((1, 4), (2, 8), (5, 3), (6, 7))
((1, 4), (3, 8), (5, 2), (7, 6))
((1, 4), (4, 7), (7, 1), (8, 8))
((1, 5), (2, 1), (5, 6), (6, 2))
((1, 5), (3, 1), (5, 7), (7, 3))
((1, 5), (4, 2), (7, 8), (8, 1))
((1, 6), (2, 2), (5, 7), (6, 3))
((1, 6), (2, 2), (5, 7), (7, 4))
((1, 6), (3, 2), (5, 8), (7, 4))
((1, 7), (2, 3), (5, 8), (6, 4))
((1, 7), (4, 1), (7, 4), (8, 8))
((1, 7), (4, 3), (5, 4), (8, 8))
((1, 8), (2, 1), (5, 5), (6, 4))
((1, 8), (2, 1), (5, 7), (8, 4))
((1, 8), (2, 4), (5, 1), (8, 7))
((1, 8), (3, 2), (5, 6), (7, 4))
((1, 8), (3, 4), (5, 2), (7, 6))
((1, 8), (4, 3), (5, 5), (6, 4))
((1, 8), (4, 4), (5, 3), (6, 5))
((1, 8), (4, 4), (5, 3), (8, 7))
((2, 2), (3, 6), (6, 1), (7, 5))
((2, 2), (4, 7), (6, 1), (7, 5))
((2, 3), (4, 7), (6, 1), (8, 5))
((2, 3), (4, 7), (6, 5), (8, 1))
((2, 4), (3, 8), (5, 2), (7, 7))
((2, 4), (3, 8), (6, 3), (7, 7))
((2, 4), (4, 6), (6, 2), (8, 8))
((2, 4), (4, 7), (7, 2), (8, 6))
((2, 4), (4, 8), (6, 2), (8, 6))
((2, 5), (3, 1), (5, 7), (7, 2))
((2, 5), (3, 1), (6, 6), (7, 2))
((2, 5), (4, 1), (6, 7), (8, 3))
((2, 5), (4, 2), (7, 7), (8, 3))
((2, 5), (4, 3), (6, 7), (8, 1))
((2, 6), (4, 2), (6, 4), (8, 8))
((2, 6), (4, 2), (6, 8), (8, 4))
((2, 7), (3, 3), (6, 8), (7, 4))
((2, 7), (4, 2), (6, 8), (7, 4))
((3, 2), (4, 6), (7, 1), (8, 5))
((3, 3), (4, 7), (7, 2), (8, 6))
((3, 4), (4, 5), (5, 3), (8, 8))
((3, 4), (4, 5), (7, 1), (8, 8))
((3, 4), (4, 6), (5, 5), (8, 1))
((3, 4), (4, 8), (7, 3), (8, 7))
((3, 5), (4, 1), (7, 6), (8, 2))
((3, 5), (4, 3), (5, 4), (8, 8))
((3, 5), (4, 4), (5, 6), (8, 1))
((3, 5), (4, 4), (7, 8), (8, 1))
((3, 6), (4, 2), (7, 7), (8, 3))
((3, 7), (4, 3), (7, 8), (8, 4))
The first line is the maximum number of squares covered, the following lines are the 1-based (row, col)
positions of the four queens that achieve the optimal covering.
So, the answer I received is 62, achieved as such (the two squares that are not controlled I have highlighted with a red circle):