前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【模板小程序】循环方阵构造(仿《剑指offer》循环矩阵打印)

【模板小程序】循环方阵构造(仿《剑指offer》循环矩阵打印)

作者头像
xiaoxi666
发布2018-10-29 17:08:03
4960
发布2018-10-29 17:08:03
举报
文章被收录于专栏:xiaoxi666的专栏xiaoxi666的专栏
代码语言:javascript
复制
 1 /*
 2 本程序说明:
 3 
 4 输入:方阵大小n,输出:n*n的旋转方阵
 5 
 6 举例:
 7     当n=2时,输出:
 8     1 2
 9     4 3
10     当n=4时,输出:
11     1 2 3 4
12     12 13 14 5
13     11 16 15 6
14     10 9 8 7
15 
16 */
17 #include <iostream>
18 #include <vector>
19 
20 using namespace std;
21 
22 void PrintMatrixInCircle(vector<int>& numbers, int columns, int rows, int start,int& number)
23 {
24     int endX = columns - 1 - start;
25     int endY = rows - 1 - start;
26 
27     // 从左到右打印一行
28     for(int i = start; i <= endX; ++i)
29     {
30         numbers[start*columns+i]=number++;
31     }
32 
33     // 从上到下打印一列
34     if(start < endY)
35     {
36         for(int i = start + 1; i <= endY; ++i)
37         {
38             numbers[i*columns+endX]=number++;
39         }
40     }
41 
42     // 从右到左打印一行
43     if(start < endX && start < endY)
44     {
45         for(int i = endX - 1; i >= start; --i)
46         {
47             numbers[endY*columns+i]=number++;
48         }
49     }
50 
51     // 从下到上打印一行
52     if(start < endX && start < endY - 1)
53     {
54         for(int i = endY - 1; i >= start + 1; --i)
55         {
56             numbers[i*columns+start]=number++;
57         }
58     }
59 }
60 
61 void PrintMatrixClockwisely(vector<int>& numbers, int columns, int rows,int& number)
62 {
63     int start = 0;
64 
65     while(columns > start * 2 && rows > start * 2)
66     {
67         PrintMatrixInCircle(numbers, columns, rows, start, number);
68         ++start;
69     }
70 }
71 
72 
73 int main()
74 {
75     int n;
76     while(cin>>n)
77     {
78         int number=1;
79         vector<int> numbers(n*n,0);
80         PrintMatrixClockwisely(numbers, n, n, number);
81         for(int i=0;i<n*n;++i)
82         {
83             if(0==i%n &&i!=0)
84                 cout<<endl;
85             cout<<numbers[i]<<" ";
86         }
87         cout<<endl;
88     }
89     return 0;
90 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档