题目名称 | 1811. [NOIP 2014PJ]螺旋矩阵 |
---|---|
输入输出 | matrixc.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cqw 于2014-11-12加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:138, 提交:453, 通过率:30.46% | ||||
Youngsc | 100 | 0.000 s | 0.00 MiB | C++ |
Harry Potter | 100 | 0.000 s | 0.00 MiB | C++ |
夜莺 | 100 | 0.000 s | 0.00 MiB | C++ |
夜莺 | 100 | 0.000 s | 0.00 MiB | C++ |
Nancy | 100 | 0.000 s | 0.00 MiB | C++ |
浅 | 100 | 0.000 s | 0.00 MiB | C++ |
1020 | 100 | 0.000 s | 0.00 MiB | C++ |
pztl | 100 | 0.000 s | 0.00 MiB | C++ |
*附加题* | 100 | 0.000 s | 0.00 MiB | C++ |
00000 | 100 | 0.000 s | 0.00 MiB | C++ |
关于 螺旋矩阵 的近10条评论(全部评论) | ||||
---|---|---|---|---|
if(x==i)
{ tot=tot+j-y; p=false; } else { tot=tot+r-y; y=r; u++; } if(p) if(y==j) { tot=tot+i-x; p=false; } else { tot=tot+d-x; x=d; r--; } if(p) if(x==i) { tot=tot-j+y; p=false; } else { tot=tot+y-l; y=l; d--; } if(p) if(y==j) { tot=tot-i+x; p=false; } else { tot=tot+x-u; x=u; l++; }
(=@__@=)
2016-10-11 20:45
7楼
| ||||
30行模拟
Dissolute丶Tokgo
2015-10-14 10:22
6楼
| ||||
回复 @常可神牛 :
多谢常神牛的题解
甘罗
2015-02-11 21:45
5楼
| ||||
题解地址:
螺旋矩阵题解 | ||||
这题库好奇葩,非得每道题的文件名都不同,难道不应该优先考虑竞赛原题的文件名一致么。。。
| ||||
| ||||
找规律吧
|
一个$n$行$n$列的螺旋矩阵可由如下方法生成:
从矩阵的左上角(第 1 行第 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 $1, 2, 3, \cdots , n^2$ ,便构成了一个螺旋矩阵。
下图是一个 $n = 4$ 时的螺旋矩阵。
现给出矩阵大小 $n$ 以及 $i$和 $j$,请你求出该矩阵中第 $i$ 行第 $j$ 列的数是多少。
输入共一行,包含三个整数$n,i,j$,每行两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。
输出共一行,包含一个整数,宝石相应的矩阵中第$i$行第$j$列的数。
4 2 3
14
对于50%的数据,$1\leq n\leq 100$;
对于100%的数据,$1\leq n\leq 30,000,1\leq i\leq n,1\leq j\leq n$。
NOIP2014 普及组 Task3