This can be done recursively as follows:
#include <stdio.h>
int padOffset (int row, int n){
int off1 = row - n;
if (off1 < 0)
off1 = off1 * (-1);
return(row<off1)? row:off1;
}
int diffCount (int row, int col, int n){
int loc1 = padOffset(row, n);
int loc2 = n - loc1;
int dif = (loc1 ==row)?1:-1; if (dif<0) {loc1++; loc2--;} if (loc1> col || col > loc2)
dif=0;
return dif;
}
int getCell (int row, int col, int n){
if (row <= 0)
return row;
int inc = diffCount(row,col,n);
return getCell(row-1,col,n)+ inc;
}
int main() {
int n;
printf ("Enter n:");scanf ("%d",&n);
n--; for (int row=0; row<=n;row++){
for (int col=0;col<=n;col++)
printf ("%d\t",
getCell(row,col,n));
printf ("\n");
}
return 0;
}