输出回型矩阵

原创 2013年12月05日 17:16:58

在上面向对象课程的时候,老师出了一个题目,让通过程序输出一个回型矩阵。

n=1的回型矩阵

1

n=2的回型矩阵

1     2

4     3

n=3的回型矩阵

1    2    3

8    9    4

7    6    5

n=4的回型矩阵

1       2     3    4

12   13   14   5

11    16  15   6

10     9     8    7

简单分析就可以发现,回型矩阵的每一圈都是先向右增加,然后向下增加,然后向左增加,然后向上增加组成的。

根据这个规律得到代码:

/*
	writen by qianshou.
	2013/12/5 17:14 pm
	study at SDNU
*/
#include<iostream>
using namespace std;
int main()
{
	int n;//n表示矩阵的规模
	int i=0;//i表示行
	int j=0;//j表示列
	int m=1;//表示要填充的数据
	n=5;//输出5乘以五的矩阵
	cout<<"请输入矩阵的规模n:";
	cin>>n;
	int k=0;
	int t=n;//t是n的备份 
	//动态建立二维数组 
	int **a=new int *[t];
	for(i=0;i<t;i++)
	{
		a[i]=new int [t];
	}
	i=0;
	while(n>0)
	{
		//1,列向右递增;
		for(;j<n;j++)
		{
			a[i][j]=m;
			m++;
		}
		i++;		//指向下一行
		j--;		//j回退到合适位置 
		//2,行向下递增;
		for(;i<n;i++)
		{
			a[i][j]=m;
			m++;
		}
		j--;		//指向前一列 
		i--;		//i回退到合适位置 
		//3,列向左递减;
		for(;j>=t-n;j--)
		{
			a[i][j]=m;
			m++;
		}
		i--;		//指向上一行 
		j++;		//j回退到合适位置 
		//4,行向上递减;
		for(;i>t-n;i--)
		{
			a[i][j]=m;
			m++;
		}
		j++;		//开始下一个循环 
		i++; 		//i回退到合适位置 
		n--;
	}
	//生成矩阵完成
	//输出矩阵
	for(i=0;i<t;i++)
	{
		for(j=0;j<t;j++)
		{
			cout<<a[i][j]<<"\t";
		}
		cout<<endl;
	} 
	//释放数组空间
	for(i=0;i<t;i++)
	{
		delete [] a[i];
	}
	delete [] a; 
	return 0;
}

给出一个运行的结果:


版权声明:本文为博主原创文章,未经博主允许不得转载。

2016 腾讯笔试题 输出回型矩阵(dfs)

n=1的回型矩阵 1  2  3 8  9  4 7  6  5 n=1的回型矩阵 1  2  3  4 12  13  14  5 11  16  15  6 10  9  8  7 n=1的回型矩...
  • piaocoder
  • piaocoder
  • 2016年04月05日 17:26
  • 1068

蛇形(回形)矩阵

/* 蛇形(回形)矩阵的实现: 解题思路: 整体思路:每一圈的数值都是连续的,所以我们一圈一圈的赋值 对一圈的初始化: 1:设置(p,p)每一圈最左上角的坐标 ...
  • ZongYinHu
  • ZongYinHu
  • 2015年04月27日 15:27
  • 2276

打印回型数组-回型矩阵-环形数组

算法的主要流程就是模拟回型矩阵生成过程,也相当于对每个格子进行编号。...
  • wyg1065395142
  • wyg1065395142
  • 2016年09月01日 22:30
  • 1270

特征提取——生成样本矩阵(MATLAB实现)

函数功能:全像素存储,将图像所有像素存储在矩阵里。将人脸图像转换为向量形式,组成样本矩阵,便于后面做降维处理。 首先利用ReadFaces函数读入样本图像 然后将imgRow像素*imgCol像素的...
  • cheyanxin2009
  • cheyanxin2009
  • 2016年03月14日 11:29
  • 1771

回形数字矩阵(Java)

问题 解决思想(递归) 将矩阵从里到外分为多层,每一层都是一个口字型数字序列,方向都是顺时针,由此我们可以将问题分解为相同的子问题,采用递归算法 源代码 import java.util.Scann...
  • sinat_37976731
  • sinat_37976731
  • 2017年11月23日 14:46
  • 70

java 蓝桥杯 回形取数

问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。 输入格式   输入第一行是两个不超过200的正整数m, n,表示矩阵的行...
  • Yiyuan_chen
  • Yiyuan_chen
  • 2017年02月23日 14:53
  • 414

坐标系转换矩阵生成

在原始坐标系中给定一个新的坐标系的x,y,z三个轴的向量,求空间转换矩阵。再具体些:比如最常用的tangent,binormal,normal的然后求一个矩阵,可以将原始坐标系中的一个向量转换到切空间...
  • ccanan
  • ccanan
  • 2007年06月04日 11:47
  • 4267

Matlab从已知矩阵中生成随机矩阵

  • 2014年02月27日 10:05
  • 612B
  • 下载

Java蓝桥杯回型取数

基础练习 回形取数   时间限制:1.0s   内存限制:512.0MB        锦囊1 循环,标记。 问题描述   回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转...
  • wzt529
  • wzt529
  • 2017年01月06日 13:02
  • 667

浅谈矩阵乘法与矩阵二次型

矩阵乘法是一种很有意思的运算,因为说是乘法不如说是加法,或者说是向量的线性组合的过程。两个矩阵的乘积C=AB,对于这个公式的线性组合方面理解有两种,一种是从左边看:,意思是矩阵C的第i行是B的行向量的...
  • carrierlxksuper
  • carrierlxksuper
  • 2014年03月28日 19:33
  • 2676
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:输出回型矩阵
举报原因:
原因补充:

(最多只允许输入30个字)