清理磁盘空间的时候翻出了多年前写过的螺旋矩阵,代码效率和水平较低,纪念一下,保存到博客园!

// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std; ///////////螺旋矩阵,从外往里/////////// class Point
{
public:
int x;
int y;
Point()
{
x=;
y=;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
loop:
int width=,state=,Number=;
std::cout<<"请输入宽度:";
cin>>width; Point LeftTop,RightTop,RightBottom,LeftBottom;
RightTop.x=width;
RightBottom.x=width;
RightBottom.y=width;
LeftBottom.y=width; //初始化数组
int **arr=new int *[width];
for(int len=;len<width;arr[len++]=new int[width]()); while (Number<=(width*width))
{
if (==state)
{
for (int i = LeftTop.x; i < RightTop.x ; i++)
{
arr[LeftTop.y][i]=Number++;
}
LeftTop.y=++RightTop.y;
state=;
continue;
}
if (==state)
{
for (int i = RightTop.y; i < RightBottom.y; i++)
{
arr[i][RightTop.x-]=Number++;
}
RightTop.x=--RightBottom.x;
state=;
continue;
}
if (==state)
{
for (int i = RightBottom.x-; i >= LeftBottom.x; i--)
{
arr[LeftBottom.y-][i]=Number++;
}
RightBottom.y=--LeftBottom.y;
state=;
continue;
}
if (==state)
{
for (int i = LeftBottom.y-; i >= LeftTop.y; i--)
{
arr[i][LeftTop.x]=Number++;
}
LeftTop.x=++LeftBottom.x;
state=;
continue;
}
} std::cout<<endl; //输出
for(int x=;x<width;x++)
{
for(int y=;y<width;y++)
{
std::cout<<setw()<<arr[x][y];
}
std::cout<<endl<<endl;
}
std::cout<<endl<<endl;
goto loop;
return ;
}

C++ 螺旋矩阵算法的更多相关文章

  1. 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】

    [059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an integer n, generate a ...

  2. 【算法笔记】B1050 螺旋矩阵

    1050 螺旋矩阵 (25 分)   本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行  ...

  3. Java-基础编程(螺旋矩阵&乘法表)

    package cn.rick.study; import java.io.BufferedReader;import java.io.InputStreamReader;import java.ut ...

  4. LeetCode 59. Spiral Matrix II (螺旋矩阵之二)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  5. LeetCode 54. Spiral Matrix(螺旋矩阵)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  6. HrbustOJ 1564 螺旋矩阵

    Description 对于给定的一个数n,要你打印n*n的螺旋矩阵. 比如n=3时,输出: 1 2 3 8 9 4 7 6 5 Input 多组测试数据,每个测试数据包含一个整数n(1<=n& ...

  7. PAT 1105 Spiral Matrix[模拟][螺旋矩阵][难]

    1105 Spiral Matrix(25 分) This time your job is to fill a sequence of N positive integers into a spir ...

  8. 【NOIP2014 普及组】螺旋矩阵

    [NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 18  解决: 0 [提交][状态][讨论版] 题目描 ...

  9. 螺旋矩阵,两步进阶,从暴力到o(1)

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

随机推荐

  1. SSM 框架快速整合实例--学生查询

    一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.对于这 3 个框架还不熟悉 ...

  2. WAMP的一些配置修改

    一.修改php运行的目录,即www目录 1. 在工具栏里点击 Apache->httpd.conf 2. 找到 DocumentRoot "G:/PHP/wamp/www/" ...

  3. MySQL与Oracle集群主从复制工具

    Oracle提供了DataGuard:MySQL提供了Group Replication,简称MGR. Oracle DataGuard的文章:http://www.cnblogs.com/adolf ...

  4. cxgrid多选删除

    设置OptionsData选项中的Editing设为True,按着Shift和Ctrl可实现多选 SelectionChanged事件 For i:= 0 To cxGrid1DBTableView1 ...

  5. 如何运行spring项目,并打成jar包进行发布

    一.创建spring项目 1.创建项目 2.创建moudule,选择java类型即可. 3.创建lib文件,引入spring的4个核心包spring-beans.spring-context.spri ...

  6. Orchard是如何运行的

    建立一个CMS网站(内容管理系统)是不同于建立一个普通的web站点:它更像是建立一个应用程序容器. 设计这样一个系统时,必须建立一流的可扩展性功能.这必需是一个非常开放式的构架,但是一个开放性的系统可 ...

  7. 继承自NSObject的不常用又很有用的函数(1)

    初始化阶段 —— load 和 initialize load函数 原型: +(void)load 当类被引用进程序的时候会执行这个函数. 在一个程序开始运行之前(在main函数开始执行之前),在库开 ...

  8. 【BZOJ1021】[SHOI2008]循环的债务(动态规划)

    [BZOJ1021][SHOI2008]循环的债务(动态规划) 题面 BZOJ 洛谷 题解 感觉以前的题目都好小清新啊,我这种智商丢失的选手完全写不动. 这题看着就像一个\(dp\),并且我们发现每种 ...

  9. IO编程(3)-序列化

    序列化 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把name改成'Bil ...

  10. (转)灵活控制 Hibernate 的日志或 SQL 输出,以便于诊断

    背景:项目开发需要.之前对于hibernate日志输出,log4j的绑定,之间的关系一直不是很清楚.终于找到一篇介绍的很详细的文章. 文章出处:https://unmi.cc/hibernate-lo ...