设为首页 加入收藏

TOP

HLG 1564 螺旋矩阵 (趣味C语言)
2015-07-24 06:37:52 来源: 作者: 【 】 浏览:53
Tags:HLG 1564 螺旋 矩阵 趣味 语言

?

?

Description
对于给定的一个数n,要你打印n*n的螺旋矩阵。

比如n=3时,输出:

1 2 3
8 9 4
7 6 5

Input

多组测试数据,每个测试数据包含一个整数n(1<=n<=32)

Output

对于每组测试数据,输出一个n*n的螺旋矩阵,定义在题目描述里。

在一组测试数据中,每个数占的字符宽度是该组数据中最大的数位数加1,比如3*3的螺旋矩阵,最大值是9,那么每个数就要占2个字符宽度。

两组测试数据之间用一个空行隔开。

Sample Input
1
2
3
Sample Output
1

1 2
4 3

1 2 3
8 9 4
7 6 5

?

代码如下:(怀念初学的时候啊~~~)

?

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #define MAXN 105 #define RST(N)memset(N, 0, sizeof(N)) using namespace std; int Kesha[105][105], cas = 0, n; int main() { while(~scanf(%d, &n)) { if(cas++) printf( ); int x, y, ans = 0; RST(Kesha); ans = Kesha[x=0][y=0] = 1; while(ans < n * n) { while(y + 1 < n && !Kesha[x][y+1]) Kesha[x][++y] = ++ans; while(x + 1 < n && !Kesha[x+1][y]) Kesha[++x][y] = ++ans; while(y - 1 >= 0 && !Kesha[x][y-1]) Kesha[x][--y] = ++ans; while(x - 1 >= 0 && !Kesha[x-1][y]) Kesha[--x][y] = ++ans; } int t = n * n; for(int i=0; i
      
       =10 && t<=99) printf(%3d, Kesha[i][j]); else if(t>=100 && t<=999) printf(%4d, Kesha[i][j]); else if(t >= 1000 ) printf(%5d, Kesha[i][j]); } printf( ); } } return 0; } 
      
     
    
   
  


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ZOJ 3795 Grouping 下一篇ORA-01843:无效的月份

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: