c++实现螺旋矩阵

9人阅读 评论(0) 收藏 举报
分类:
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。如下图所示:
                                                

此类题目经常出现在各大互联网公司的面试笔试这种,今天我用c++实现输入一个整N,就打印出N*N的螺旋矩阵,源码如下:
#include <iostream>
#include<iomanip>
#include<vector>
using namespace std;

int main()
{
	int n = 0;
	cout << "please input a number n:";
	while (cin >> n && n != EOF)
	{
		// 动态开辟二维数组
		vector<vector<int> > a(n + 1, vector<int>(n + 1));
		/*//申请空间
		int **a = new int*[n];
		for (int i = 0; i < n + 1; i++)
		{
		a[i] = new int[n+1];
		}
		for (i = 1; i <= n; ++i)//初始化二维数组为零
		{
		for (j = i; j <= n ; ++j)
		a[i][j] = 0;
		}*/
		int i = 0;
		int  j = 0;
		int  k = 1;
		for (i = 1; i <= n / 2; ++i)
		{
			for (j = i; j <= n - i; ++j) /* 左侧 */
			{
				a[i][j] = k++;
			}

			for (j = i; j <= n - i; ++j) /* 下方 */
			{
				a[j][n + 1 - i] = k++;
			}

			for (j = n - i + 1; j >= i + 1; j = j - 1) /* 右侧 */
			{
				a[n + 1 - i][j] = k++;
			}

			for (j = n - i + 1; j >= i + 1; j = j - 1) /* 上方 */
			{
				a[j][i] = k++;
			}
		}
		if (n != 1)
		{
			for (i = 1; i <= n; ++i)
			{
				for (j = 1; j <= n; ++j)
				{
					cout << setw(5) << a[i][j]; 
				}
				cout << endl;
			}
		}
		else
		{
			cout << setw(5) << n;
		}
		cout << endl << "please input a number n:";
		/* //释放空间
		for (int i = 0; i < n+1; i++)
		delete[]a[i];
		a = NULL;*/
	}
	return 0;
}
运行结果   :
                                                  

查看评论

C++螺旋矩阵C++螺旋矩阵C++螺旋矩阵C++螺旋矩阵

  • 2010年07月19日 12:22
  • 990B
  • 下载

简单的螺旋矩阵的实现

简单地用c++实现螺旋矩阵
  • Edwardwe
  • Edwardwe
  • 2017-02-22 20:46:32
  • 1182

笔试题里螺旋矩阵的C++简单实现

最近笔试时,被人问道螺旋矩阵的输出问题,当时紧张,想的不是很透彻,回去研究一番,实现如下: 比如N=4的矩阵: 1    2   3    4      ----a排 12 13 14  5 11 1...
  • yanerhao
  • yanerhao
  • 2015-04-09 19:58:31
  • 2450

螺旋矩阵(c实现)

#include #define N 10 int main() { int c=0,i=0,j=0,out=1,n,z; int a[N][N]={0};/* 初始化下数组*/ printf(...
  • edcvf3
  • edcvf3
  • 2012-07-08 13:53:22
  • 4597

模拟法简单实现螺旋矩阵

一、螺旋矩阵简介螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环 螺旋矩阵是如下的形式: n=2时 1 2 4 3 n=3时 1 ...
  • cvrszeng
  • cvrszeng
  • 2016-09-11 11:03:38
  • 319

机试题螺旋矩阵C++实现

一次机试的时候碰到了一个这样的题目,当时却没有做出来,现在想想当时还是紧张了 题目:输入一个整数n,要求能够打印出一个这样的矩阵,以n=5为例,输出如下矩阵 ...
  • whgyxy
  • whgyxy
  • 2016-03-11 15:56:56
  • 407

C++编程循环输出螺旋矩阵

具体代码如下: /********************************************************** **********************循环输出螺旋矩阵**...
  • raiven2008
  • raiven2008
  • 2015-02-28 21:38:03
  • 1641

【模拟】[NOIP2014]螺旋矩阵[c++]

题目描述 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺...
  • MIECZ
  • MIECZ
  • 2017-03-14 15:39:44
  • 672

C++ - PAT - 1050. 螺旋矩阵(25)

本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所...
  • qq_34594236
  • qq_34594236
  • 2016-08-05 21:45:28
  • 897

用c语言实现螺旋矩阵

  • 2009年11月30日 20:30
  • 473B
  • 下载
    个人资料
    等级:
    访问量: 931
    积分: 65
    排名: 162万+
    文章存档