一道关于C++二维数组的问题


输入一个值为n的数,输出这样一个n*n的序列。如何简单实现?
for example  打印一个序列:
1    2   3    4
12  13   14   5
11  16   15   6

10   9   8    7 


[cpp]

  1. #include <vector>   
  2. #include <iostream>   
  3. using namespace std;  
  4.   
  5. int main()  
  6. {  
  7.     int n;  
  8.     int i, j;  
  9.     int t;  
  10.     int flag = 1;  
  11.     vector< vector<int> > Matrix;  
  12.   
  13.     cout << "输入n: \n";  
  14.     cin >> n;  
  15.     Matrix.resize(n);  
  16.     for(i=0; i<n; i++)  
  17.         Matrix[i].resize(n);  
  18.   
  19.     i = j = 0;  
  20.   
  21.     for(i=0; i<n; i++)  
  22.         for(j=0; j<n; j++)  
  23.             Matrix[i][j] = -1;  
  24.   
  25.     i = j = 0;  
  26.     t = 1;  
  27.   
  28.     while(t <= n*n)  
  29.     {  
  30.         if(flag == 1)  
  31.         {  
  32.             if(Matrix[i][j] == -1)  
  33.             {  
  34.                 Matrix[i][j] = t;  
  35.                 j++;  
  36.                 if(j+1 >= n || Matrix[i][j+1] != -1)  
  37.                     flag = 2;  
  38.             }  
  39.         }  
  40.         else if(flag == 2)  
  41.         {  
  42.             if(Matrix[i][j] == -1)  
  43.             {  
  44.                 Matrix[i][j] = t;  
  45.                 i++;  
  46.                 if(i+1 >= n || Matrix[i+1][j] != -1)  
  47.                     flag = 3;  
  48.             }  
  49.         }  
  50.         else if(flag == 3)  
  51.         {  
  52.             if(Matrix[i][j] == -1)  
  53.             {  
  54.                 Matrix[i][j] = t;  
  55.                 j--;  
  56.                 if(j-1 < 0 || Matrix[i][j-1] != -1)  
  57.                     flag = 4;  
  58.             }  
  59.         }  
  60.         else if(flag == 4)  
  61.         {  
  62.             if(Matrix[i][j] == -1)  
  63.             {  
  64.                 Matrix[i][j] = t;  
  65.                 i--;  
  66.                 if(i-1 < 0 || Matrix[i-1][j] != -1)  
  67.                     flag = 1;  
  68.             }  
  69.         }  
  70.         ++t;  
  71.     }  
  72.   
  73.     for(i=0; i<n; i++)  
  74.     {  
  75.         for(j=0; j<n; j++)  
  76.         {  
  77.             cout << Matrix[i][j];  
  78.             if(j!=n-1)  
  79.                 cout << ' ';  
  80.             else  
  81.                 cout << '\n';  
  82.         }  
  83.     }  
  84.     return 0;  
  85. }  

相关内容