Если это C++, то подойдёт такая формула:
M[i][j]=(abs(j-i)+1)*((i+j-N+1)*(i-j)>=0)
Если формулу хочется чисто математическую, то вместо ((i+j-N+1)*(i-j)>=0) можно написать (sign(2*(i+j-N+1)*(i-j)+1)+1)/2
Ну подсказка у вас в примере. Убедитесь что понимаете по какому принципу заполнена матрица из примера ( с оглядкой на матрицу слева ). Затем попробуйте сформулировать для себя словами правила заполнения такой матрицы ( это уже и будет алгоритм ) ну и потом пишите код.
Собственно если вам матрица кажется слишком сложной то разделите ее на части - разделите ее диагоналями на 4 части, и попробуйте разобраться с каждой отдельно, а потом уже соединить все вместе.