歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 一道關於C++二維數組的問題

一道關於C++二維數組的問題

日期:2017/3/1 10:34:57   编辑:Linux編程
輸入一個值為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. int main()
  5. {
  6. int n;
  7. int i, j;
  8. int t;
  9. int flag = 1;
  10. vector< vector<int> > Matrix;
  11. cout << "輸入n: \n";
  12. cin >> n;
  13. Matrix.resize(n);
  14. for(i=0; i<n; i++)
  15. Matrix[i].resize(n);
  16. i = j = 0;
  17. for(i=0; i<n; i++)
  18. for(j=0; j<n; j++)
  19. Matrix[i][j] = -1;
  20. i = j = 0;
  21. t = 1;
  22. while(t <= n*n)
  23. {
  24. if(flag == 1)
  25. {
  26. if(Matrix[i][j] == -1)
  27. {
  28. Matrix[i][j] = t;
  29. j++;
  30. if(j+1 >= n || Matrix[i][j+1] != -1)
  31. flag = 2;
  32. }
  33. }
  34. else if(flag == 2)
  35. {
  36. if(Matrix[i][j] == -1)
  37. {
  38. Matrix[i][j] = t;
  39. i++;
  40. if(i+1 >= n || Matrix[i+1][j] != -1)
  41. flag = 3;
  42. }
  43. }
  44. else if(flag == 3)
  45. {
  46. if(Matrix[i][j] == -1)
  47. {
  48. Matrix[i][j] = t;
  49. j--;
  50. if(j-1 < 0 || Matrix[i][j-1] != -1)
  51. flag = 4;
  52. }
  53. }
  54. else if(flag == 4)
  55. {
  56. if(Matrix[i][j] == -1)
  57. {
  58. Matrix[i][j] = t;
  59. i--;
  60. if(i-1 < 0 || Matrix[i-1][j] != -1)
  61. flag = 1;
  62. }
  63. }
  64. ++t;
  65. }
  66. for(i=0; i<n; i++)
  67. {
  68. for(j=0; j<n; j++)
  69. {
  70. cout << Matrix[i][j];
  71. if(j!=n-1)
  72. cout << ' ';
  73. else
  74. cout << '\n';
  75. }
  76. }
  77. return 0;
  78. }
Copyright © Linux教程網 All Rights Reserved