Sicily 1694. Spiral
训练的题目
模拟题,蛇形矩阵,保证是n*n的矩阵,并且n是奇数 , 在矩阵中填数,从最中心开始填,逆时针转圈,1,2,3…………n*n。输入n,表示矩阵的大小,输入一个数字m,找出m在矩阵的哪行哪列
其实这个蛇形矩阵可以分为一圈一圈来看,要找m,可以先确定它在哪一圈
每一圈都值的范围是 [ k^2+1 , (k+2)*(k+2) ] ,其中k是奇数
看一圈的四个角,
右上角最大: max = (k+2)*(k+2)
左上角次之: max - (k+2) + 1
左下角再次: max - 2*(k+2) + 2
右下角 : max - 3*(k+2) + 3
所以可以以这4个值作为一个范围,将这个圈分成4份,叫做 上行 , 左列 , 下行 , 右列
这4分里面的数字是连续的,要在里面找一个值,直接扫描即可
代码写得不是很好,后来没修改了
#include <cstdio> #include <cstring> #define MAX 32768typedef long long ll; ll nn[MAX+10]; ll pos,n;void init() {memset(nn,0,sizeof(nn));for(ll i=1; i<=MAX+6; i+=2)nn[i] = i*i; }ll search(ll p) {for(ll i=1; ; i+=2)if(nn[i] < p && p <= nn[i+2])return i;return -1; }int main() {init();int T;scanf("%d",&T);while(T--){scanf("%lld%lld",&n,&pos);if(pos == 1){printf("%lld %lld\n",(n+1)/2 , (n+1)/2);continue;}ll m = search(pos);ll max = (m+2)*(m+2);ll q = (m+1)/2;//【 m*m+1 , (m+2)*(m+2) 】//找到在第q圈 ll r , c;ll k;ll temp;if(pos <= max && pos > max-(m+2)+1) //上行 {r = (n+1)/2 - q;c = (n+1)/2 + q;temp = max;for(k=c; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if(pos <= max-(m+2)+1 && pos > max-2*(m+2)+2 ) //左列 {c = (n+1)/2 - q;r = (n+1)/2 - q;temp = max-(m+2)+1;for(k=r; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}else if(pos <= max-2*(m+2)+2 && pos > max-3*(m+2)+3 ) //下行 {r = (n+1)/2 + q;c = (n+1)/2 - q;temp = max-2*(m+2)+2;for(k=c; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if( pos <= max-3*(m+2)+3 && pos > max-4*(m+2)+4)//右列 {c = (n+1)/2 + q;r = (n+1)/2 + q;temp = max-3*(m+2)+3;for(k=r; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}}return 0; }
Sicily 1694. Spiral相关推荐
- LeetCode:Spiral Matrix I II
Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...
- LeetCode 54. Spiral Matrix--Python解法--螺旋排序
题目地址:Spiral Matrix - LeetCode Given a matrix of m x n elements (m rows, n columns), return all eleme ...
- Leetcode: Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- 旋转遍历矩阵 Spiral Matrix
为什么80%的码农都做不了架构师?>>> 问题: Given a matrix of m x n elements (m rows, n columns), return al ...
- LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...
- LeetCode59 Spiral Matrix II
题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...
- LeetCode Spiral Matrix II (生成螺旋矩阵)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F ...
- 59. Spiral Matrix II
/** 59. Spiral Matrix II * 12.5 by Mingyang* 注意,这里我们说的Matrix就是正方形,不再是长方形了,所以我们会用* 更简单的方法,就是直接上下左右分别加 ...
最新文章
- DataFrame的copy的用法
- 我,AI专家,模型检测COVID-19准确率高达97.5%,约吗
- 算法提高课-搜索-最短路模型-AcWing 188. 武士风度的牛 :bfs、dist数组记录最小步数
- 一条命令教你安装centos下面的pip服务
- Entityframework批量删除
- 图片鉴黄大赛上线,请开始你的表演
- 泰山JDK8升级u302,找到了更好的整合mips办法
- SPSS T检验(图文+数据集)【SPSS 017期】
- Google Colab使用笔记
- 桥接命令brctl的用法
- matlab 中norm函数的用法
- DBSCAN聚类算法
- html在下划线上加文本框,在word文本框中如何添加下划线
- 目前有哪些好用的测试管理工具?
- uni-app H5+ 连接蓝牙打印机打印文字及二维码
- linux是微内核还是宏内核,微内核与宏内核比较
- Photoshop 2023 Mac(PS 2023)v24.0.0中英文已发布,新功能详细介绍,支持M1/M2/intel
- .Net 优秀的开源框架整理
- 制售《原神》外挂非法获利200万,外挂的危害有多大?
- 群晖wordpress如何连接mysql,「全网首发」群晖wordpress二级目录下实现IP加端口访问教程...