【模板小程序】循环方阵构造(仿《剑指offer》循环矩阵打印)
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 }
『注:本文来自博客园“小溪的博客”,若非声明均为原创内容,请勿用于商业用途,转载请注明出处http://www.cnblogs.com/xiaoxi666/』
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性