递推递归练习 O
来源:互联网 发布:js调用高德地图api 编辑:程序博客网 时间:2024/06/05 17:48
Description
n×n的螺旋方阵当n=5和n=3时分别是如下的形式
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
请给出一个程序,对于任意的输入n(0<n<11),输出按照上面规律所获得的n×n的螺旋方阵。
Input
输入第一行为整数m(0<m<10),代表有m组输入;
接下来是m行数据,每行输入一个n(0<n<11)。
接下来是m行数据,每行输入一个n(0<n<11)。
Output
按照输入的次序,依次输出每一个n×n方阵(一个方阵的同一行数据之间以'\t'分隔)
两个输出方阵之间输出一个空行。
两个输出方阵之间输出一个空行。
Sample Input
14
Sample Output
1 2 3 412 13 14 511 16 15 610 9 8 7
代码:
#if 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m , a[20][20] ;
cin>> m ;
int ax[]={0,1,0,-1} ,ay[] ={1,0,-1,0 } ; //控制方向
while (m--)
{
int n;
cin>>n;
memset(a,0,sizeof(a)) ;
int nx=0 , ny=0 ,x=0,y=0,k=0;
for(int i=0 ;i<n*n ;i++)
{
a[x][y] =i+1 ;
nx = x+ ax[k] ;
ny= y+ay[k] ;
if(nx==n||nx<0||ny==n||ny<0||a[nx][ny]!=0)
{
k=(k+1)%4 ;
nx= x+ ax[k] ;
ny =y +ay[k] ;
}
x= nx ; y=ny ; //确定 要去的 方向
}
for (int i=0 ;i< n ;i++)
{
for(int j=0 ;j< n ;j++)
cout<< a[i][j] <<" \t" ;
cout<<endl;
}
}
}
int m , a[20][20] ;
cin>> m ;
int ax[]={0,1,0,-1} ,ay[] ={1,0,-1,0 } ; //控制方向
while (m--)
{
int n;
cin>>n;
memset(a,0,sizeof(a)) ;
int nx=0 , ny=0 ,x=0,y=0,k=0;
for(int i=0 ;i<n*n ;i++)
{
a[x][y] =i+1 ;
nx = x+ ax[k] ;
ny= y+ay[k] ;
if(nx==n||nx<0||ny==n||ny<0||a[nx][ny]!=0)
{
k=(k+1)%4 ;
nx= x+ ax[k] ;
ny =y +ay[k] ;
}
x= nx ; y=ny ; //确定 要去的 方向
}
for (int i=0 ;i< n ;i++)
{
for(int j=0 ;j< n ;j++)
cout<< a[i][j] <<" \t" ;
cout<<endl;
}
}
}
#endif
0 0
- 递推递归练习O
- 递推递归练习 O
- 递推递归练习 O
- 递推递归练习O
- 递推递归练习 O 螺旋方阵
- 递推递归练习O螺旋方阵
- 递推递归练习 中的O题
- 递推递归练习 O题
- ACM递归递推练习 Problem O
- 递推递归练习——O
- 递推递归练习--O(螺旋方阵)
- 递推递归练习 A
- 递推递归练习 B
- 递推递归练习 C
- 递推递归练习 E
- 递推递归练习 F
- 递推递归练习 G
- 递推递归练习 I
- Algorithm Gossip (11) KMP字符串匹配
- 初识QT4
- 使用java理解程序逻辑第八章
- 21
- createQuery is not valid without active transaction
- 递推递归练习 O
- ListView学习笔记
- neutron安全组功能点梳理总结
- Andrew Ng机器学习课程笔记
- php实现数据结构线性表(链式)
- 类和对象
- Blogs Links
- linux内核不发(Router Solicit)RS报文问题
- POJ