noip201403螺旋矩阵【普及组】数学算法

思路如下:

1.输入n>>a>>b;

2.用一个循环缩小范围求出a,b所示的数所在的圈数q;

3.再一个循环求出圈数q的第1个数的值sum;

4.用四个if判断a,b所示的数在本圈q的上或下或左或右;

5.根据位置求出t(在sum的基础上需要+的值)

6.输出<<sum+t;

代码如下:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int n,a,b,i,j,q=0,sum=1,t,l;
    cin>>n>>a>>b;
    for(i=1;i<=n;i++)
        if(a>=i&&a<=n-i+1&&b>=i&&b<=n-i+1)
            q++;
        else
            break;
    l=n+2;
    for(i=1;i<=q-1;i++)
    {
        l=n-2*(i-1);
        sum=sum+4*(l-1);
    }
    l=l-2;
    if(a==q)
        t=b-(q-1)-1;
    if(b==n-(q-1))
        t=a-(q-1)-1+(l-1);
    if(a==n-(q-1))
        t=n-(q-1)-b+(l-1)*2;
    if(b==q&&a!=q)
        t=n-(q-1)-a+(l-1)*3;
    cout<<sum+t;
    system("pause");
    return 0;
}

摘自码酷

时间: 2024-08-24 09:08:46

noip201403螺旋矩阵【普及组】数学算法的相关文章

[NOIP2014普及组]螺旋矩阵

题目地址: ayyzvijos:http://pingce.ayyz.cn/vijos/Problem_Show.asp?id=2017 vijos:https://vijos.org/p/1913 COGS:http://218.28.19.228/cogs/problem/problem.php?pid=1811 题目来源:NOIP2014普及组第三题 问题分析:这道题的内容很易懂,而且容易实现,即直接构造出一个螺旋矩阵,输出对应位置即可.这样的方法大概可以过掉50%的数据.但是,对于100

每日算法之四十一:Spiral Matrix II (螺旋矩阵)

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For example, Given n = 3, You should return the following matrix: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 针对这个问题采用最直观的方式即可,即螺旋插入,这里有两个地方需要注意,一个是插入边界的界定,

螺旋矩阵算法

螺旋矩阵算法是一种常用的算法,如图中排列数值: 代码如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> *{ padding: 0; margin: 0; } ul{ border: 1px solid black; border-bottom: n

NOIP2014-普及组复赛-第三题-螺旋矩阵

题目描述 Description 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转:重复上述操作直至经过矩阵中所有格子.根据经过顺序,在格子中依次填入1, 2, 3, ... , n,便构成了一个螺旋矩阵.2 下图是一个n = 4 时的螺旋矩阵. 1     2     3     4 12    13    14    5 11    16    15    6 10     9     8     7

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

[054-Spiral Matrix(螺旋矩阵)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example, Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]

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

[059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For example, Given n = 3, You should return the following matrix: [ [ 1, 2, 3 ], [ 8,

守望者的逃离(2007年普及组第3题)| 贪心算法

守望者的逃离(2007年普及组第3题) [问题描述] 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率深藏在海底的那加企图叛变,守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时岛上的所有人都会遇难:守望者的跑步速度为17m/s, 以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复.

NOIP2016普及组复赛解题报告

提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:https://www.luogu.org/problem/show?pid=2010 T3:https://www.luogu.org/problem/show?pid=2058 T4:https://www.luogu.org/problem/show?pid=2119) 不得不说,亲历了14.1

简单易懂的实现螺旋矩阵

最近在研究螺旋矩阵,一直网上搜,基本上都是只有代码,也没有什么解释,有解释的也看不太懂,于是自己仔细想了想,终于弄出来了,下面是解题的思路. 其实最初的算法,一定是由数学衍生过来的,自己想一想,我要你画一个5*5的螺旋矩阵,你会怎么画,每个人估计都是这样 第一步: 1 2 3 4 5 //先画一行 第二步: 1 2 3 4 5 //再画一列 6 7 8 9 第三步: 1 2 3 4 5 //再这样画一行 6 7 8 13 12 11 10 9 再以此类推,我说的一定没错吧. 同样的算法呢,也是类