Если вы выяснили код для чтения (для печати), то, конечно, вы можете просто изменить это, чтобы делать записи, используя ту же логику?
Если вы хотите, чтобы каждая ячейка в матрице содержала свой «порядковый номер», считая в обратном порядке, что-то вроде этого должно работать, предполагая, что логика доступа правильная:
for (int i = (m*n)-1, j = 0, index = m * n; i > 0; i--, j++) {
for (int k = j; k < i; k++) values[j][j] = index--;
for (int k = j; k < i; k++) values[k][i] = index--;
for (int k = i; k > j; k--) values[i][k] = index--;
for (int k = i; k > j; k--) values[k][j] = index--;
}