天梯 1160 蛇形矩阵

解题报告:输入一个奇数n,输出一个n行n列的蛇形矩阵。我的做法是先将所有的打表,然后直接输出,但是这样要求要非常准确定位,如果某个地方稍有差错,输出来就会是一个什么都不像的东西。下面是代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 int map[105][105];
 4 void dabiao() {
 5     int d = 2;
 6     int x = 50,y = 50;
 7     map[x][y] = 1;
 8     for(int i = 2;i<100;i+=2) {
 9         y+=1;
10         map[x][y] = d++;
11         for(int j = 1;j<i;++j) {
12             x--;
13             map[x][y] = d++;
14         }
15         for(int j = 1;j<=i;++j) {
16             y--;
17             map[x][y] = d++;
18         }
19         for(int j = 1;j<=i;++j) {
20             x++;
21             map[x][y] = d++;
22             
23         }
24         for(int j = 1;j<=i;++j) {
25             y++;
26             map[x][y] = d++;
27         }
28     }
29 }
30         
31 
32 int main() {
33     int n;
34     memset(map,0,sizeof(map));
35     dabiao();
36     while(scanf("%d",&n)!=EOF) {
37         int sum = 0;
38         for(int i = 50-n/2;i<=50+n/2;++i)
39         for(int j = 50-n/2;j<=50+n/2;++j) {
40             if(i == j || i+j ==100)
41             sum+=map[i][j];
42             printf(j==50+n/2? "%d
":"%d ",map[i][j]);
43         }
44         printf("%d
",sum);
45     }
46     return 0;
47 }
View Code


 

原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3235946.html