博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打印数字回环
阅读量:5041 次
发布时间:2019-06-12

本文共 1318 字,大约阅读时间需要 4 分钟。

题目要求:

Input a value n, then print out a n×n matrix.

    Example 1: Input 2, output
1 2
4 3
    Example2: Input 5, output
  1    2    3    4    5
 16   17   18   19    6
 15   24   25   20    7
 14   23   22   21    8
 13   12   11   10    9

思路:

把该输出划分为多个环,每一个环上有4根线。分别为0,1,2,3号。

最外层的环每根线上有n-1个数字,每靠内一层。线上数字少2个。

计算每一个位置(row, col)相应的环、线、线内索引。进而求出环内索引和全局索引。在该位置打印全局索引就可以。

代码例如以下:

#include  
<algorithm>
using  
namespace  
std;
int
 get_number(
int  
row, 
int
 col, 
int
 n)
{
          
int
 n_1 = n - 1;
          
int
 loop1 = min(row, col);
          
int
 loop2 = min(n_1-row, n_1-col);
          
int
 loop = min(loop1, loop2);
          
int
 line, index_in_line;
          
if
 (col == loop && row != loop)
        {
                line = 3;
                index_in_line = (n_1-loop) - row;
        }
          
else
 
if  
(n_1-row == loop)
        {
                line = 2;
                index_in_line = (n_1-loop) - col;
        }
          
else
 
if  
(n_1-col == loop)
        {
                line = 1;
                index_in_line = row - loop;
        }
          
else
 
if  
(row == loop)
        {
                line = 0;
                index_in_line = col - loop;
        }
          
int
 line_length = n_1 - loop * 2;
          
int
 index_in_loop = line * line_length + index_in_line;
          
int
 before_loop = 4 * (n_1 - loop + 1) * loop;
          
return
 before_loop + index_in_loop + 1;
}
void  
print_square(
int  
n)
{
          
for
(
int  
row=0; row<n; ++row)
        {
                  
for
(
int  
col=0; col<n; ++col)
                {
                          
int  
number = get_number(row, col, n);
                        printf(  
"%4d "
, number);
                }
                printf(  
"\n"
);
        }
}
int  
main () {
          
for
(
int  
i=1; i<10; ++i)
        {
                print_square(i);
                printf(  
"\n"
);
        }
          
return  
0;
}

转载于:https://www.cnblogs.com/jhcelue/p/6795575.html

你可能感兴趣的文章
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>
聊聊、Zookeeper Linux 单服务
查看>>
Linux常用命令总结
查看>>
yii模型ar中备忘
查看>>
C#线程入门
查看>>
CSS清除浮动方法
查看>>
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>