解螺旋数组
来源:互联网 发布:淘宝宝贝什么时候下架 编辑:程序博客网 时间:2024/05/29 19:19
没错, 我就是有这么无聊....
大概就是碰到边界就转90°走就行了.
#include "stdafx.h"#include <iostream>int statTable[4] = { 1, 2, 3, 0 };int moveTable[4][2] = { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 } };const int Fog = -1;typedef void(*MatrixCallback)(int* matrix, int m, int n);void Matrix(int m, int n, MatrixCallback result){if (m <= 0 || n <= 0){return;}auto matrix = new int[m * n];memset(matrix, Fog, m * n * sizeof(int));int x = 0;int y = 0;int stat = 0;int loop = 0;do{matrix[y * n + x] = loop;auto tmpY = y + moveTable[stat][0];auto tmpX = x + moveTable[stat][1];if (tmpY >= m || tmpX >= n || tmpY < 0 || tmpX < 0 || matrix[tmpY * n + tmpX] != Fog){stat = statTable[stat];y += moveTable[stat][0];x += moveTable[stat][1];}else{y = tmpY;x = tmpX;}} while (++loop < m * n);if (result != NULL){result(matrix, m, n);}delete[] matrix;}int _tmain(int argc, _TCHAR* argv[]){using namespace std;auto print = [](int* matrix, int m, int n) {for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){cout << matrix[i * n + j] << "\t";}cout << endl;}};Matrix(13, 7, print);return 0;}
0 0
- 解螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 螺旋数组
- 【算法】荷兰国旗
- poj3414(BFS)
- 省市二级联动的js
- 【剑指offer】 面试题5: 从尾到头打印链表
- java简单计算器
- 解螺旋数组
- 解决php生成GD图片不显示问题
- PHP 5.6.3 日期bug
- python调用Opencv3
- 重叠I/O之事件对象通知
- 【PAT 乙级(Basic Level)】锤子剪刀布
- 智能家居为什么使用ZigBee而不是433
- 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
- c#中的定时器的使用