vijos P1913螺旋矩阵

原创 2016年08月30日 22:11:27


描述

一个 n 行 n 列的螺旋矩阵可由如下方法生成:

从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子, 则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中 依次填入 1, 2, 3, ... , n2,便构成了一个螺旋矩阵。下图是一个 n = 4 时的螺旋矩阵。

1121110 213169 314158 4567  

现给出矩阵大小 n 以及 i 和 j,请你求出该矩阵中第 i 行第 j 列的数是多少。

格式

输入格式
输入共一行,包含三个整数 n,i,j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。

输出格式
输出共一行,包含一个整数,表示相应矩阵中第 i 行第 j 列的数。


样例1

样例输入1
4 2 3
样例输出1
14

限制
对于 50%的数据,1  ≤ n  ≤ 100;

对于 100%的数据,1  ≤ n  ≤ 30,000,1  ≤ i  ≤ n,1  ≤ j  ≤ n。

来源
NOIP2014 普及组

题解

先判断第i行第j列数字外有几圈数字,如样例中数字14外就有一圈数字,然后计算每一圈又多少个数,然后将它们减掉,直至要输出的数字在最外圈(即该数字外有零圈数),然后判断该数所处的位置即可

代码

#include <iostream>
using namespace std;	
int n,i,j,t;
int main()
{
	cin>>n>>i>>j;
	while(i!=1&&i!=n&&j!=1&&j!=n)
	{
		t+=(n-1)*4;
		n-=2;
		i--;
		j--;
	}
	if(i==1)
	   cout<<t+j;
	else if(j==n)
	   cout<<t+n+i-1;
	else if(i==n)
	   cout<<t+(n-1)*2+n-j+1;
    else
       cout<<t+(n-1)*3+n-i+1;
	return 0;
}

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

Vijos P1913 螺旋矩阵(模拟)

有时候反过来换个角度想问题,往往会变得比较简单。
  • qq_35855297
  • qq_35855297
  • 2016年08月30日 19:46
  • 141

vijos搭建双塔(dp)

数据弱,朴素的算法竟然过了,后来bitset位运算的01背包优化加上后快了7倍//顺便还练习了一下对拍 f【i】【j】=true,表示塔1高为i,塔2高为j,的情况存在 方程 if (dp[j]...
  • zhhx2001
  • zhhx2001
  • 2016年05月28日 17:10
  • 549

【NOI2012】美食节

DescriptionCZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节。 作为一个喜欢尝鲜的美食客,小 M 自然不愿意错过这场盛宴。他很快就尝遍了美食节所有的美食。然而, 尝鲜的欲望是难以...
  • doyouseeman
  • doyouseeman
  • 2016年08月19日 22:07
  • 542

排序+中位数 Vijos P2871 安装服务器

又是一道用二维忽悠人的题目
  • qq_39439314
  • qq_39439314
  • 2017年07月19日 16:37
  • 143

【vijos】【建反图最短路】最优贸易

描述C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个 城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路,...
  • leotan0321
  • leotan0321
  • 2016年11月09日 07:35
  • 91

重庆一中Vijos 【训练题】步步为零 P1428 题解

x
  • qq_22137969
  • qq_22137969
  • 2014年10月19日 12:10
  • 703

Vijos P1849 表达式求值【有限状态自动机】

描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 格式 输入格式 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与...
  • tigerisland45
  • tigerisland45
  • 2017年05月10日 18:58
  • 374

Vijos 1696-数与连分数【模拟】

... ...:“这个简单...我们还是去刚才的海边呗...” ...:"其实今晚...我是有一定要完成的事情的..." ., 威尼斯真的是一个美丽的城市...很小的时候我就听说这个地方.. 这一天...
  • qq_29600137
  • qq_29600137
  • 2016年04月14日 17:58
  • 831

【vijos1677】【KMP】陶陶的名字

陶陶的名字 背景 陶陶是一个智能机器人,他能像人一样思考问题,不过由于IQ问题,他给自己取了一个很长很长的名字。 描述 某一天,陶陶想把自己的名字涂在墙上。由于...
  • u011327397
  • u011327397
  • 2016年10月18日 08:31
  • 194

二分查找(vijos1450包裹快递)

一个快递公司要将n个包裹分别送到n个地方,并分配给邮递员小K一个事先设定好的路线,小K需要开车按照路线给的地点顺序相继送达,且不能遗漏一个地点。小K得到每个地方可以签收的时间段,并且也知道路线中一个地...
  • u013672056
  • u013672056
  • 2017年07月27日 20:38
  • 134
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vijos P1913螺旋矩阵
举报原因:
原因补充:

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