蛇形数组
来源:互联网 发布:淘宝卖家月退款金额 编辑:程序博客网 时间:2024/06/03 02:15
蛇形数组,就是让n*n的数组设置为如下值:
3*3:
1 2 6
3 5 7
4 8 9
4*4:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
5*5:
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25
蛇形图初始方向向右,之后方向转换图如下
代码如下
class SnakingLine{public:enum direction {RIGHT,LEFTDOWN,DOWN,RIGHTUP, };SnakingLine(unsigned int);~SnakingLine();void draw();void show();private:unsigned int m_nSize;unsigned int* m_map;};
SnakingLine::SnakingLine(unsigned int size):m_nSize(size),m_map(NULL){}SnakingLine::~SnakingLine(){if (NULL!= m_map){delete[] m_map;m_map = NULL;}}void SnakingLine::draw(){ if(NULL == m_map) { m_map = new unsigned int[m_nSize*m_nSize]; }int x = 0;int y = 0;unsigned counter = 0;direction d = RIGHT;m_map[y * m_nSize + x] = ++counter;while(counter < m_nSize * m_nSize){ switch(d){case RIGHT:++x;if (y == m_nSize -1){d = RIGHTUP;}else if(y == 0){d = LEFTDOWN;}break;case LEFTDOWN:--x;++y;if (y + 2 > m_nSize){d = RIGHT;}else if (x < 1){d = DOWN;}break;case DOWN:++y;if (x < 1){d = RIGHTUP;}else if (x + 2 > m_nSize){d = LEFTDOWN;}break;case RIGHTUP:++x;--y;if (x + 2 > m_nSize){d = DOWN;}else if(y < 1){d = RIGHT;}break;}m_map[y * m_nSize + x] = ++counter;}}void SnakingLine::show(){for(int i = 0; i < m_nSize * m_nSize; ++i){if (i % m_nSize == 0){cout << endl;/* code */}cout << m_map[i] << '\t';}cout << endl;}
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形数组
- 蛇形输出数组问题
- //输出蛇形数组
- 多重背包,多种解法,动态规划
- 【python】巧用SAE搭建微信本地调试环境
- 基于Visio技术的网络拓扑是软件绘图的首选技术
- PDB文件
- 基于STK的卫星飞行轨迹仿真技术
- 蛇形数组
- 矩阵旋转
- html5的Video和audio标签学习笔记
- Fixed compiling bug ('unordered_map' file not found) under Apple.
- Java 注册监听器的方法总结(自身类this+外部类+内部类+匿名内部类+适配器Adapter+一个组件注册多个监听器)
- 转:关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的解释
- 欢乐派对 堆优化+邻接表
- MFC-CWinThread
- 硅谷之所以骨子里与众不同,是因为有这七件事