螺旋方阵
2016-04-09 13:05
225 查看
螺旋方阵
Time Limit: 1000MS Memory limit: 65536K
题目描述
n×n的螺旋方阵当n=5和n=3时分别是如下的形式请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
输入
输入第一行为整数m(0<m<10),代表有m组输入;接下来是m行数据,每行输入一个n(0<n<11)。
输出
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以'\t'分隔)两个输出方阵之间输出一个空行。
示例输入
1 4
示例输出
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
#include <iostream> #include <cstdio> using namespace std; int n; int b[12][12]; void f(int st, int number, int m); int main() { int m; cin >> m; while(m --) { cin >> n; f(1, 1, n); cout << endl; } return 0; } void f(int st, int number, int m) { if(m == 0) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) if(j == n) { cout << b[i][j] << endl; } else { cout << b[i][j] << '\t'; } } return; } if(m == 1) { b[st][st] = number; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) if(j == n) { cout << b[i][j]<< endl; } else { cout << b[i][j] << '\t'; } } return; } int h = st, v = st; for(int i = 1; i < m; i++) { b[h][v++] = number++; } for(int i = 1; i < m; i++) { b[h++][v] = number++; } for(int i = 1; i < m; i++) { b[h][v--] = number++; } for(int i = 1; i < m; i++) { b[h--][v] = number++; } f(st+1,number, m-2); }
[/code]
相关文章推荐
- 排序算法
- 郑轻OJ 1090: 整数幂(多实例测试)
- 为什么我要成为最佳(二)
- 如何在Ubuntu上安装最新版本的Node.js
- U盘装机助理-PE环境
- mysql数据库优化 SQL语句优化
- 深度学习概述:从感知机到深度网络
- 结队作业之电梯调度算法
- CentOS6.x生产环境下一键安装mono+jexus的脚本,自启动,带服务,版本号自控
- Oracle用户权限分配
- JSP、Cookie、Session
- 导入java项目
- tslib安装 C compiler cannot create executables
- mysql数据库导出的方法
- 【机房重构个人版】DataTable与泛型
- C# winform窗体间传值(使用委托或事件)
- Windows XP 第三大操作系统
- kali2.0 msf连接数据库及启动armitage
- linux中的装*神器
- 大视野2186: 沙拉公主的困惑(求逆元)