博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
螺旋阵列
阅读量:7121 次
发布时间:2019-06-28

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*       C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛
 
                
82   81   80   79   78   77   76   75   74   73
 
                
83   50   49   48   47   46   45   44   43   72
 
                
84   51   26   25   24   23   22   21   42   71
 
                
85   52   27   10    9    8    7   20   41   70
 
                
86   53   28   11    2    1    6   19   40   69
 
                
87   54   29   12    3    4    5   18   39   68
 
                
88   55   30   13   14   15   16   17   38   67
 
                
89   56   31   32   33   34   35   36   37   66
 
                
90   57   58   59   60   61   62   63   64   65
 
                
91   92   93   94   95   96   97   98   99  100*/
 
 
//看到这个方阵,一想到的就是找规律。这个题目规律只有两个 转圈 自加
//转圈就要给数组元素定位,主要做的工作就是找规律然后根据规律用for简化,然后再赋值。
//如果把一圈当作一个循环的话,那整体循环N/2次
 
#include <iostream>
using 
namespace 
std;
int 
main()
{
        
const 
int 
N=10;
//这个就不说了
         
        
//先建立一个二维数组
        
int 
a[N][N];
         
        
//为了观察运行出的错,先把数组各个元素通通赋为0吧,这样一来,有什么错误在运行时候,一看就能看出来。
        
for
(
int 
i=0;i<N;i++)
                
for
(
int 
j=0;j<N;j++)
                
{
                        
a[i][j]=0;
                
}
         
         
         
        
//试了一下从1赋值,感觉很费事,还是从后往前推吧,最后一个数字是N*N
        
int 
last=N*N;
        
int 
n=N;   
//中间变量。
        
int 
i=n-1,j;
//第一个循环要用到i(第54行),所以赋个初值
        
for
(
int 
k=0;k<N/2;k++)
//如果把一圈当作一个循环的话,那整体循环N/2次
        
{
                 
                
for
(j=n-1;j>k;j--)
//给100-92赋值
                        
a[i][j]=last--;
                
for
(i=n-1;i>k;i--)
//给91-83赋值
                        
a[i][j]=last--;
                
for
(;j<n-1;j++)  
//给82-74赋值
                        
a[i][j]=last--;
                
for
(;i<n-1;i++)  
//给73-65
                        
a[i][j]=last--;
                
//最外面的一圈赋值完成了,进行下一圈。
                
n--;i--;
        
}
         
        
//显示数组各个元素
        
for
(
int 
i=0;i<N;i++)
        
for
(
int 
j=0;j<N;j++)
        
{
                
cout<<a[i][j]<<
"\t"
;
                
if
(j==N-1)        
//这要注意换行。
                        
cout<<endl<<endl;
        
}
        
return 
0;
}
出处:
作者:

转载地址:http://bcsel.baihongyu.com/

你可能感兴趣的文章
Interactive cloth
查看>>
字符编码【转载】
查看>>
mysql中的事物处理
查看>>
Android 车联网天气
查看>>
POJ 2430 状压DP
查看>>
C++Primer第5版学习笔记(三)
查看>>
Centos7系统介绍
查看>>
GIT简单实用
查看>>
Sonar - 部署常见问题及解决方法
查看>>
IOS 学习笔记(3) 视图UITabbarController
查看>>
逻辑运算&map函数&filter函数&reduce函数
查看>>
从“在winform里打开网页功能”引发的问题探究
查看>>
contiki makefile框架分析 < contiki学习之一 >
查看>>
md5 加密 swfit版
查看>>
JDBC - Database Connections
查看>>
基于bootstrap的时间选择插件daterangepicker以及汉化方法
查看>>
cemtos7.2搭建samba
查看>>
lua io.read()
查看>>
C语言编程题目(一)
查看>>
Xcode快捷键
查看>>