Pythonだとこんなんでいいの?
def queens(size):
    def safe(l, x0, y0):
        return all(x != x0 and y != y0 and abs(x - x0) != abs(y - y0) for x, y in l)
    def solve(y):
        if y == 0:
            return [[]]
        else:
            ls = [l + [(x, y)] for x in range(1,size+1) for l in solve(y-1) if safe(l, x, y)]
            return ls
    return solve(size)
for ans in queens(8):
    print ans