People like Criss who ask this question in interviews are looking for a brute force solution with recursive backtracking.
import Data.List (permutations)
solve :: Int -> [[Int]]
solve i = filter (valid . zip [1..]) (permutations [1..i])
valid :: [(Int, Int)] -> Bool
valid [] = True
valid (x:xs) = singleValid x xs && valid xs
where
singleValid x xs = all (pairwiseValid x) xs
pairwiseValid (x1, y1) (x2, y2) = abs (x1-x2) /= abs (y1-y2)