C++2 D配列に関する質問


nの値の数を入力し、このようなn*nのシーケンスを出力します.どのように簡単に実現しますか?
for exampleはシーケンスを印刷します.
1    2   3    4
12  13   14   5
11  16   15   6
10   9   8    7 
 #include <vector>
 #include <iostream>
 using namespace std;

 int main()
 {
     int n;
     int i, j;
     int t;
     int flag = 1;
     vector< vector<int> > Matrix;

     cout << "  n: 
"; cin >> n; Matrix.resize(n); for(i=0; i<n; i++) Matrix[i].resize(n); i = j = 0; for(i=0; i<n; i++) for(j=0; j<n; j++) Matrix[i][j] = -1; i = j = 0; t = 1; while(t <= n*n) { if(flag == 1) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; j++; if(j+1 >= n || Matrix[i][j+1] != -1) flag = 2; } } else if(flag == 2) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; i++; if(i+1 >= n || Matrix[i+1][j] != -1) flag = 3; } } else if(flag == 3) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; j--; if(j-1 < 0 || Matrix[i][j-1] != -1) flag = 4; } } else if(flag == 4) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; i--; if(i-1 < 0 || Matrix[i-1][j] != -1) flag = 1; } } ++t; } for(i=0; i<n; i++) { for(j=0; j<n; j++) { cout << Matrix[i][j]; if(j!=n-1) cout << ' '; else cout << '
'; } } return 0; }