C++ 螺旋矩阵算法
清理磁盘空间的时候翻出了多年前写过的螺旋矩阵,代码效率和水平较低,纪念一下,保存到博客园!
// 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++ 螺旋矩阵算法的更多相关文章
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
[059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an integer n, generate a ...
- 【算法笔记】B1050 螺旋矩阵
1050 螺旋矩阵 (25 分) 本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
- Java-基础编程(螺旋矩阵&乘法表)
package cn.rick.study; import java.io.BufferedReader;import java.io.InputStreamReader;import java.ut ...
- LeetCode 59. Spiral Matrix II (螺旋矩阵之二)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- 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 ...
- HrbustOJ 1564 螺旋矩阵
Description 对于给定的一个数n,要你打印n*n的螺旋矩阵. 比如n=3时,输出: 1 2 3 8 9 4 7 6 5 Input 多组测试数据,每个测试数据包含一个整数n(1<=n& ...
- PAT 1105 Spiral Matrix[模拟][螺旋矩阵][难]
1105 Spiral Matrix(25 分) This time your job is to fill a sequence of N positive integers into a spir ...
- 【NOIP2014 普及组】螺旋矩阵
[NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 18 解决: 0 [提交][状态][讨论版] 题目描 ...
- 螺旋矩阵,两步进阶,从暴力到o(1)
题目描述 一个 n 行 n 列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转:重复上述操作直至经过矩阵中所有格 ...
随机推荐
- 第二个Sprint冲刺第六天(燃尽图)补
- Beta 冲刺 七
团队成员 051601135 岳冠宇 031602629 刘意晗 031602248 郑智文 031602330 苏芳锃 031602234 王淇 项目进展 岳冠宇 昨天的困难 换了种方法写了搜索栏, ...
- Vue---父子组件之间的通信
在vue组件通信中其中最常见通信方式就是父子组件之中的通信,而父子组件的设定方式在不同情况下又各有不同.最常见的就是父组件为控制组件子组件为视图组件.父组件传递数据给子组件使用,遇到业务逻辑操作时子组 ...
- BZOJ2653 middle(二分答案+主席树)
与中位数有关的题二分答案是很常用的trick.二分答案之后,将所有大于它的看成1小于它的看成-1,那么只需要判断是否存在满足要求的一段和不小于0. 由于每个位置是1还是-1并不固定,似乎不是很好算.考 ...
- hdwiki 附件上传大小设置
1.进入服务器,找到 wamp 路径,搜索php.ini ,参考 x:\wamp\usr\local\php\php.ini 文本打开,搜索 post_max_size = 设置成要的值 ...
- 【ARC079F】Namori Grundy
Description 题目链接 大意:给一张基环外向树.要求给每一个点确定一个值,其值为所有后继点的\(\text{mex}\).求是否存在确定权值方案. Solution 首先,对于叶子节点,其权 ...
- A guess 解题报告
A guess 题意 选一个\([1,n](n\le 500)\)的整数,可以询问数是否属于区间\([l,r]\),多次询问一起回答,统计有多少种询问区间集合(无序)满足可以猜出这个数,对\(p(2^ ...
- Spring MVC测试框架
原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解——服务端测试 博客分类: springmvc杂谈 spri ...
- C语言复习---选择法排序
选择排序也是一种简单直观的排序算法 它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列:然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾. ...
- mongodb与mysql的区别与具体应用场景
MongoDB: 非关系型数据库,文档型数据库, 文档型数据库:可以存放xml,json,bson类型的数据.这些数据具备自述性(self-describing),呈现分层的树状数据结构.数据结构由键 ...