打印矩阵1--蛇形矩阵

题目说明
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

样例输入
5  5
样例输出   

   1   2   6   7  15
   3   5   8  14  16
   4   9  13  17  22
  10  12  18  21  23
  11  19  20  24  25

两个方位数组dx和dy遍历右,左下,下,右上四个方向,因为我们只要用着四个方向

之后k表示第几个数,t我们可以用来判断转换的方向。

太晚了,本题先告一段落,再加上剩余的16个视频,集训的7天慢慢研究吧

集训七天乐,学习更快乐!!!

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 using namespace std;
 5 int dx[4]={0,1,1,-1};
 6 int dy[4]={1,-1,0,1};
 7 //右,左下,下,右上
 8 int a[25][25]; 
 9 int main()
10 {
11     int n,x,y,k,t;
12     scanf ("%d",&n);
13     memset(a,-1,sizeof(a));
14     for (int i = 1;i <= n;i++)
15     {
16         for (int j = 1;j <= n;j++)
17         {
18             a[i][j]=0;
19         }
20     }
21     x=1;
22     y=1;
23     k=1;
24     t=0;
25     while (k<=n*n)
26     {
27         a[x][y]=k;
28         k++;
29         if (k>n*n)
30         break;
31         while (a[x+dx[t]][y+dy[t]]!=0)
32         {
33             t++;
34             if (t==4)t=0;
35         }
36         x=x+dx[t];
37         y=y+dy[t];
38         if (t==0||t==2)t++;
39     }
40     for (int i = 1;i <= n;i++)
41     {
42         for(int j = 1;j <= n;j++)
43         {
44             printf ("%4d",a[i][j]);
45     }
46     cout<<endl;
47     }
48     return 0;
49 }

猜你喜欢

转载自www.cnblogs.com/very-beginning/p/12194359.html