E.cpp 908 B

1234567891011121314151617181920212223242526272829303132
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. for (int n; cin >> n;) {
  5. if (n == 0)break;
  6. vector<vector<int>> a(n, vector<int>(n, 0));//int a[n][n]={0}
  7. vector<vector<bool>> used(n, vector<bool>(n, false));//bool used[n][n]={false;}
  8. int x = n - 1, y = n / 2;
  9. a[x][y] = 1;
  10. used[x][y] = true;
  11. for (int k = 2; k <= n * n; k++) {
  12. if (!used[(x + 1) % n][(y + 1) % n]) {
  13. x = (x + 1) % n;
  14. y = (y + 1) % n;
  15. } else if (!used[(x - 1 + n) % n][y]) {
  16. x = (x - 1 + n) % n;
  17. }
  18. a[x][y] = k;
  19. used[x][y] = true;
  20. }
  21. for (int i = 0; i < n; i++) {
  22. for (int j = 0; j < n; j++) {
  23. printf("%2d ", a[i][j]);
  24. }
  25. cout << endl;
  26. }
  27. }
  28. return 0;
  29. }