fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5. vector< vector<int> > w(100, vector<int>(100));
  6. int n,x=0,y=0,m=1;
  7. void (*fp[4])(int );
  8. void f1(int n){
  9. for(int i=0;i<n;i++){
  10. w[x][y+i]=m;
  11. m++;
  12. };
  13. x++;y+=n-1;
  14. };
  15.  
  16. void f2(int n){
  17. for(int i=0;i<n;i++){
  18. w[x+i][y]=m;
  19. m++;
  20. };
  21. x+=n-1;y--;
  22. };
  23.  
  24. void f3(int n){
  25. for(int i=0;i<n;i++){
  26. w[x][y-i]=m;
  27. m++;
  28. };
  29. x--;y-=n-1;
  30. };
  31.  
  32. void f4(int n){
  33. for(int i=0;i<n;i++){
  34. w[x-i][y]=m;
  35. m++;
  36. };
  37. x-=n-1;y++;
  38. };
  39.  
  40. void out(){
  41. for(int i=0;i<n;i++){
  42. for(int j=0;j<n;j++)cout<<w[i][j]<<' ';
  43. cout<<endl;
  44. };
  45. };
  46.  
  47. int main(){
  48. int k;
  49. cin>>n;
  50. fp[0] = f1;
  51. fp[1] = f2;
  52. fp[2] = f3;
  53. fp[3] = f4;
  54. for(int i=0;i<=(n-1)*2;i++){
  55. k=n-(i+1)/2;
  56. fp[i%4](k);
  57.  
  58. };
  59. out();
  60. return 0;
  61. }
  62.  
Success #stdin #stdout 0s 3464KB
stdin
10
stdout
1 2 3 4 5 6 7 8 9 10 
36 37 38 39 40 41 42 43 44 11 
35 64 65 66 67 68 69 70 45 12 
34 63 84 85 86 87 88 71 46 13 
33 62 83 96 97 98 89 72 47 14 
32 61 82 95 100 99 90 73 48 15 
31 60 81 94 93 92 91 74 49 16 
30 59 80 79 78 77 76 75 50 17 
29 58 57 56 55 54 53 52 51 18 
28 27 26 25 24 23 22 21 20 19