螺旋矩阵
2016-06-15 00:00
232 查看
测试所有代码:
#include<stack> #include<algorithm> #include<vector> #include<queue> #include<iostream> #include<iterator> #include<functional> #include<list> using namespace std; const int M = 5; const int N = 6; vector<vector<int> > build_spiral_matrix(int m, int n); vector<int> print_spiral_matrix(const vector<vector<int> > &vec); int main() { auto mat1=build_spiral_matrix(M, N); for (int j = 0;j < M;++j) { copy(mat1[j].begin(), mat1[j].end(), ostream_iterator<int>(cout, " ")); cout << endl; } auto ans2 = print_spiral_matrix(mat1); copy(ans2.begin(), ans2.end(), ostream_iterator<int>(cout, " ")); return 0; } //螺旋矩阵的构造 vector<vector<int> > build_spiral_matrix(int m, int n) { vector<vector<int>> ans(m, vector<int>(n, 0)); int index = 0; int i; int bx = 0; int ex = n - 1; int by = 0; int ey = m - 1; while (1) { for (i = bx;i <= ex;++i) { ans[by][i] = ++index; } if (++by>ey) break; for (i = by;i <= ey;++i) { ans[i][ex] = ++index; } if (--ex<bx) break; for (i = ex;i >= bx;--i) { ans[ey][i] = ++index; } if (--ey<by) break; for (i = ey;i >= by;--i) { ans[i][bx] = ++index; } if (++bx>ex) break; } return ans; } //螺旋矩阵的打印 vector<int> print_spiral_matrix(const vector<vector<int> > &vec) { vector<int> ans; if (vec.size() == 0) { return ans; } int bx = 0; int ex = vec[0].size() - 1; int by = 0; int ey = vec.size() - 1; int i; while (1) { for (i = bx;i <= ex;++i) { ans.push_back(vec[by][i]); } if (++by>ey) break; for (i = by;i <= ey;++i) { ans.push_back(vec[i][ex]); } if (--ex<bx) break; for (i = ex;i >= bx;--i) { ans.push_back(vec[ey][i]); } if (--ey<by) break; for (i = ey;i >= by;--i) { ans.push_back(vec[i][bx]); } if (++bx>ex) break; } return ans; }
相关文章推荐
- log4j配置xml详解
- C++中的哈希容器unordered_map
- C++中的哈希容器unordered_map
- NiceLabel中文本字段连接该怎么修改
- 怎样对CODESOFT中的条形码进行黑白转换
- Multiple methods named 'count
- Java中Properties类的操作
- 麒麟开源堡垒主机在等保上的合规性分析
- mybatis 调用存储过程,如何抛出sql异常
- mysql 常用配置
- JFinal的Routes机制详解
- Jimoshi_Struts2 框架学习(三)--valueStack和ognl、struts2验证、struts2文件上传和下载
- 适用于JFinal的一个SQL Select和SqlExceptSelect的生成器
- anchorPoint和posizione的区别和联系
- Spring整合rabbitmq
- Windows配置Java开发环境
- 关于子类对象实例化是否会实例化父类对象的理解
- 背景透明 内容不透明
- frame框架及其实例
- Bootstrap文件上传插件File Input的使用