腾讯2016实习生笔试编程题 打印蛇形矩阵
来源:互联网 发布:淘宝网店服务平台 编辑:程序博客网 时间:2024/05/16 15:07
腾讯2016实习生笔试编程题,当时没做出来,只写了个雏形,还存在很多问题。考完了才把它调通。好难过。。
要求实现的效果如下。
#include <iostream> using namespace std; int main() { int n = 0; cin >> n; int *arr = new int[n*n]; int num = 0; int endX = 0, endY = 0; if (0 == n % 2) { endX = n / 2 - 1; endY = n / 2; } else { endX = n / 2; endY = n / 2; } int x = 0, y = 0, per = 0; int disX_R = 0, disX_L = 0, disY_U = 1, disY_D = 0; while (x != endX || y != endY) { switch (per % 4) { case 0: //Right if (x == n - disX_R - 1) { arr[y*n + x] = ++num; ++y; ++per; ++disX_R; } else { arr[y*n + x] = ++num; ++x; } break; case 1: //Down if (y == n - disY_D - 1) { arr[y*n + x] = ++num; --x; ++per; ++disY_D; } else { arr[y*n + x] = ++num; ++y; } break; case 2: //Left if (x == disX_L) { arr[y*n + x] = ++num; --y; ++per; ++disX_L; } else { arr[y*n + x] = ++num; --x; } break; case 3: //Up if (y == disY_U) { arr[y*n + x] = ++num; ++x; ++per; ++disY_U; } else { arr[y*n + x] = ++num; --y; } break; default: break; } } if (x == endX && y == endY) arr[y*n + x] = ++num; for (int i = 0;i < n;++i) { for (int j = 0;j < n;++j) cout << arr[i*n+j] << "\t"; cout << endl; } delete arr; }
0 0
- 腾讯2016实习生笔试编程题 打印蛇形矩阵
- 腾讯2016实习生笔试编程题 打印蛇形矩阵的递归做法
- 腾讯2016实习生编程题蛇形矩阵打印
- 腾讯2016软开实习生笔试题-编程1:蛇形矩阵
- 腾讯笔试题:蛇形矩阵
- 腾讯笔试 蛇形矩阵
- [腾讯]打印蛇形矩阵
- [2016腾讯暑期实习在线笔试题][蛇形矩阵]
- 腾讯2016实习生笔试编程题 寻找最佳路径
- 2016腾讯实习生笔试编程题:构造回文
- 2016腾讯实习生笔试编程题:字符移位
- 2016腾讯实习生笔试编程题:有趣的数字
- 2012年腾讯实习生笔试编程题
- 2017腾讯实习生招聘笔试编程题
- 腾讯2016实习笔试:n阶蛇形矩阵
- 腾讯笔试题,蛇形矩阵的Java实现
- 腾讯实习生笔试题
- 腾讯实习生笔试题
- javascript的自定义对象
- three.js(webGL库)
- 查找最大回文子串算法
- mysql 存储过程分享
- 9. Palindrome Number
- 腾讯2016实习生笔试编程题 打印蛇形矩阵
- Machine Learning第六周笔记二:机器学习系统设计
- 记录个关于浮点数的比较小小“坑”
- RESPONSE.ADDHEADER使用实例收集
- [Properties]——配置文件存储
- android studio 更新Gradle版本方法
- 我的第一篇博文
- php中this,self,parent三个关键字
- 腾讯2016实习生笔试编程题 寻找最佳路径