https://atcoder.jp/contests/abc436/tasks/abc436_b
斜めの列を埋めつくしたら次の斜めの列に移行するから必ず全部埋まるという話ですね。
行列を作って、順にその要素に値を入れていくだけですね。
N <- scan("stdin", integer()) table <- matrix(0, nrow=N, ncol=N) r <- 0 c <- (N-1)/2 table[r+1, c+1] <- 1 for(i in 2:(N*N)) { new_r <- (r - 1) %% N new_c <- (c + 1) %% N if(table[new_r+1, new_c+1] == 0) { table[new_r+1, new_c+1] = i r = new_r c = new_c } else { new_r = (r + 1) %% N table[new_r+1, c+1] = i r <- new_r } } for(i in 1:N) { cat(table[i, ], sep = " ") cat("\n") }