我的螺旋矩阵解法!
来源:互联网 发布:java实现的软件 编辑:程序博客网 时间:2024/05/18 00:53
/////////////////////////////////////////////////////////////
//问题:将螺旋方阵放到n*n的二唯数组中并把他打印输出,要求由程序自动生成下图所示螺旋方阵,
// n由程序读入
// 1 16 15 14 13
// 2 17 24 23 12
// 3 18 25 22 11
// 4 19 20 21 10
// 5 6 7 8 9
//
//思路:观察方阵,找出规律
// (1)设N=5,则每一外回个数为 N+N-1+N-1+n-2 = 4*N-4
// (2)第i行的第i+1的数为4*N-4
// (3)统一由N控制循环,当N>0是时,向下递增,向右递减
// (4)这样就可以确定上三角,再由反对角线上的数确定剩下的数
//
//Write by: kejie
//date : 2005-4-22
//
//欢迎有更好的意路提出大家讨论Thanks!
//
//
//
/////////////////////////////////////////////////////////////
#include <iostream.h>
#define Max 10
//先定义最大二维数组
static int A[Max][Max];
void CreateLou( int n)
{
int i,j=1;
int e=2; //e用于控制每列的递增数
int M,k,l; //M用于记录N数,K用于每行递增数,l用于限制层数
int row,col;//用于记录反对角线上的行,列上的数
A[0][0]=1; //首先定义数组第1个元素为1
M=l=n; //传递n值给 M ,L,以以防改变N值
k=4*M-4; //记录第1行第2个元素的值(计算公式,由图中规律观察得出)
//外围while循环,次数由层数决定(一个回合为一层,比如当N=5时,1-16为第一层,
//17-24为第二层)
while (M>0)
{
//由for循环生成数组值,注意位置
for(i=j;i<l;i++)
{
A[i][j-1] = e++;
A[j-1][i] = k--;
}
//确定下一层的第1个值
A[j][j] = A[j-1][j]+1;
//下一层各个位置值设定
e=A[j][j]+1;
M-=2;
k=4*M-4+A[j][j]-1;
j++;
}
////////////////////////////
//以下为生成下三角数,方法与上面相同
k=1;
M=n;
while (k<=M/2)
{
row = A[M-k][k-1];
col = A[k-1][M-k];
for(i=k;i<M-k+1;i++)
{
A[n-k][i] = ++row;
A[i][n-k] =--col;
}
k++;
}
//最后输出N维螺旋数组~~
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
}
int main()
{
int n;
do {
cout<<"Please input N(less than 10):";
cin>>n;
}while (n>10);
CreateLou(n);
return 0;
}
---------------------------
本程序在XP+SP2, VC++6.0上通过!!
- 我的螺旋矩阵解法!
- 螺旋矩阵 解法
- 我的螺旋矩阵实现
- 打印螺旋矩阵(递归解法)
- 螺旋矩阵_动态规划解法
- 打印螺旋矩阵(递归解法)
- LintCode 螺旋矩阵 (新解法)
- 螺旋队列算法的解法
- 螺旋队列的另一种解法
- 螺旋矩阵--我的实现方法
- 螺旋矩阵的打印
- 螺旋矩阵的实现
- 螺旋矩阵的处理
- 螺旋矩阵的算法
- 螺旋矩阵的求解
- PHP:矩阵的螺旋输出。。。是螺旋吗?我更倾向叫漩涡。
- 螺旋队列最优算法的解法
- 一个螺旋矩阵的类
- Smart App Server
- unix程序员进来
- JSP页面文件目录树源码(递归算法)
- 大一学习经验总结
- 常用开源组件包(二)
- 我的螺旋矩阵解法!
- 存储过程入门与提高(了解理解)
- Dreamweaver:制作目录树
- ASP+ACCESS实现的无限级目录树
- 正确地去爱
- GEF,EMF,RCP,Eclipse's plugin的几个问题(7) 创建自己的选择文件PropertyDescrptor自定义的FileNamePropertyDescriptor
- 开通Blog很长时间了,今天第一次管理!
- 这个Blog好慢:(
- 在TXT中进行文件读写