【C++】【PAT】1050螺旋矩阵

来源:互联网 发布:centos和ubuntu哪个好 编辑:程序博客网 时间:2024/05/20 18:48

#2.分析 基本想法是首先将输入的数字存储在数组中,然后对数组进行递减排序。开一个二位数组,将数字依次填入二位数组中,最后打印二位数组。 二位数组的填充很像小时候玩儿的刷油漆游戏。 对于一个m*n的矩阵,可以分成四个区域“刷漆”如下图: ![](http://images2015.cnblogs.com/blog/824187/201608/824187-20160802192009059-2033056915.png) 填充数组的时候从最外层开始,每循环一次填充一层。根据题目要求,m>=n,那么如果n为偶数,循环n/2次即可完成全部填充,如果n为奇数,那么循环n/2次后,还有一列空白区域没有填充,这个空白区域是a[n/2+1][n/2+1]~a[m-n/2][n/2+1]。 + 对于区域1(红色部分):每次填充,行标不变,列标变化; + 对于区域2(黄色部分):每次填充,列标不变,行标变化; + 对于区域3(绿色部分):每次填充,行标不变,列标变化; + 对于区域4(蓝色部分):每次填充,列表不变,行标变化。 对于多出来的空白部分,单独处理即可。


0 0
原创粉丝点击