Сумма элементов массива по периметру и побочной диагонали

Необходимо найти сумму элементов двумерного динамического массива по периметру и побочной диагонали, но у меня идёт дублирование некоторых элементов из за этого ответ не верный

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
    int sum;
    sum = 0;
    int i, n, j;
    int **matrix;
    cout <<"Введите размерность";
    cin>> n;
    matrix = new int *[n];
    for (i=0; i<n; i++)
    {
        matrix[i] = new int [n];
        for (j=0; j<n; j++)
        matrix [i][j] = i*n+j+1;
    }
    
    for (i=0; i<n; i++){
        for (j=0; j<n; j++)
            if (((j==0)||(j==n-1))||((i==0)||(i==n-1)||(j==(n-i))))
             sum += matrix[i][j];
    }
    cout<< "Результат:";
    for(i=0; i<n; i++){
        cout<< "\n";
        for (j=0; j<n; j++)
        cout <<setw(5) << matrix [i][j];
    }
    cout<<"\nСумма";
    cout<< "\n";
        cout << sum;
    for(int i=0; i<n; i++){
    delete matrix [i];
    }
delete [] matrix;
    return 0;
}

Это как? :thinking:
Как определили это?

ну у этой задачи есть чёткий ответ
А ещё посчитал вручную ответ не сходится, хотя на дублирование не похоже число получается меньше чем в ответе. Но мало ли он их просто не считает из за дублирования.

Так тут похоже просто условие для побочной диагонали неправильное.

Гугл подсказывает так: Program to print the Diagonals of a Matrix - GeeksforGeeks
(i + j) == (n - 1)

Спасибо помогло. Хотя это условие мне подсказали и сказали что верное, да и я находил похожие.