华为笔试技术岗软件开发_第1页
华为笔试技术岗软件开发_第2页
华为笔试技术岗软件开发_第3页
华为笔试技术岗软件开发_第4页
华为笔试技术岗软件开发_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、笔试题目1、括号匹配/01 括号匹配 #define _CRT_SECURE_NO_WARNINGS/*括号匹配给定一个字符串,里边可能包含“()”、“”、“”三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。 输出:true:若括号成对出现且嵌套关系正确,或该字符串中无括号字符;false:若未正确使用括号字符。实现时,无需考虑非法输入。输入描述:输入为:字符串例子:(1+2)/(0.5+1)输出描述:输出为:字符串例子:true*/代码:刺猬实习1. #include 2. #include 刺猬实习3. #include 4. #include 5. #include

2、 6. #include 7. using namespace std;8. bool isLeft(char a) 9. 10.return (a = () | (a = ) | (a = );11.12.bool isRight(char a) 13.14.return (a = ) | (a = ) | (a = );15.16.bool isMatch(char a, char b) 17.18.if(a = (&b = )19.20.return true;21.22.else if(a = &b = )23.24.return true;25.26.else if(a = &b =

3、 )27.28.return true;29.30.return false; 31.32.33.int main() 34.35. #if 036. freopen(in.txt, r, stdin);37. /freopen(out.txt, w, stdout);38. #endif39. string str;40. vector cvec;41. cvec.reserve(200);42. while(cin str)43.44. auto iter = str.begin();45. for(; iter != str.end(); +iter)46.2、 打印队列/02 打印机任

4、务 #define _CRT_SECURE_NO_WARNINGS/*刺猬实习47. /左括号直接进栈 48. if(isLeft(*iter)49.50.cvec.push_back(*iter);51.52. /如果出现右括号 53. else if(isRight(*iter)54.55. /不合理情况 1: 栈空的话,直接退出这里情况一开始忘记考虑,但是华为机试仍然 100%通过 56. if(cvec.empty()57.58.break;59.60. char c = cvec.back();61. cvec.pop_back();62. /不合理情况 2:判断栈中左括号与现在的右

5、括号是否匹配 63. if(!isMatch(c, *iter)64.65.break;9. /处理不合理情况 1,2以及不合理情况 3:字符已经遍历结束,但是栈仍然非空 70. if(iter != str.end()|!cvec.empty()71.72.cout false endl;73.74.else75.76.cout true endl;77.78.79.return 0; 80.打印机任务简要描述:某个打印机根据打印机队列执行打印任务,打印任务分为九个优先级,分别用数字 19 表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务 A,然后检查队列余下

6、任务中有没有比 A 优先级更高的任务,则将任务 A 放在队列尾部,否则就执行任务 A 的打印。请编写一个程序,根据输入的打印队列,编出实际的打印顺序。 输入描述:函数原型: void printOrder(const int input, int len, int output)输入参数 input 表示打印队列,为一个由整数 19(优先级)组成的数组,数组索引 0 表 示打印队列头部。对于 C/C+,参数 len 表示 input 数组的长度。可以假定输入的参数总是合法有效的,input 数组长度有可能为 0,但不会是空指针。 输出为一个表示实际打印顺序的数组,其数组项为打印任务在输入数组中

7、的索引值(从 0开始)。Java 通过返回值输出。C/C+通过输出参数 output输出,可以假定为存放结果分配了足够的空间 。题目其余部分没有记录,有人记录的,可以希望在留言处补全,大家一起分享交流。 输入样例:9, 3, 5输出样例:0, 2, 1*/刺猬实习1. #define _CRT_SECURE_NO_WARNINGS2. #include 3. #include 4. #include 5. #include 6. #include 7. #include 8. using namespace std;9. #define MAX 50010. int inputMAX;11.

8、/循环队列的结点数据元素 刺猬实习1. /Q 非空 2. /返回循环队列的最大优先级的索引号 3. int getMax(CyQueue Q) 4. 5. int maxNum = Q.front;6. int i = nextIdx(Q, Q.front);7. for(; i != Q.rear; i = nextIdx(Q, i) 8.9.if(Q.elemi.num Q.elemmaxNum.num)10.12.struct QNode 13.14. int num;15. int idx; 16.;17.18.typedef struct Que 19.20. QNode* elem

9、;21. int front;22. int rear;23. int len;24. int sz;25. CyQueue; 26.27.void initQueue(CyQueue& Q) 28.29. Q.front = Q.rear = 0;30. Q.len = Q.sz = 0;31. Q.elem = nullptr; 32.33.34.bool isEmpty(CyQueue Q) 35.36.return Q.len = 0; 37.38.39.int nextIdx(CyQueue Q, int cur) 40.41.return (cur + 1) % (Q.sz + 1

10、);42.刺猬实习11.maxNum = i;12.13.14.return maxNum; 15.16.17. /删除节点 18. void Pop(CyQueue& Q) 19.20. Q.front = nextIdx(Q, Q.front);21. -Q.len; 22.23.24. /获得队头元素 25. QNode getFront(CyQueue& Q) 26.27.return Q.elemQ.front; 28.29.30. /插入节点 31. void Push(CyQueue& Q, QNode& q) 32.33. Q.elemQ.rear = q;34. Q.rear

11、 = nextIdx(Q, Q.rear);35.+Q.len; 36.37.38. /主函数 打印序列 39. void printOrder(const int input, int len, int output) 40.41. CyQueue Q;42. initQueue(Q);43. Q.len = len;44. Q.sz = len + 1;45. Q.elem = new QNodelen + 1;46. for(int i = 0; i num)79.80. /处理逗号的输入 81. cin c;82. inputlen+ = num;83.84. int outputMA

12、X = 0;85. printOrder(input, len, output); 86.87.for(int i = 0; i len; +i)88.89.if(i != len - 1)90.91.cout outputi , ;92.93.else94.95.cout outputi;96.97.98.return 0;3、平安果#define _CRT_SECURE_NO_WARNINGS/*平安果简要描述:给定一个 M 行 N 列的矩阵(M*N 个格子),每个格子中放着一定数量的平安果。你从左上角的各自开始,只能向下或者向右走,目的地是右下角的格子。每走过一个格子,就把格子上的平安果

13、都收集起来。求你最多能收集到多少平安果。注意:当经过一个格子时,需要一次性把格子里的平安果都拿走。限制条件:1N,M=50;每个格子里的平安果数量是 0 到 1000(包含 0 和 1000).输入描述:输入包含两部分:第一行 M, N接下来 M 行,包含 N 个平安果数量输出描述:一个整数最多拿走的平安果的数量示例:输入2 41 2 3 406 7 8 90输出刺猬实习99.136代码:刺猬实习1. #include 2. #include 3. using namespace std; 4.5. /一道简单的 dp 问题 6. int main() 7. 8. #if 19. freope

14、n(in.txt, r, stdin);10. #endif11. int m, n;12. while(cin m n)13.14. vectorvector ivec(m, vector(n);15. for(int i = 0; i m; +i)16.17.for(int j = 0; j ivecij;20.21.22.vectorvector dp(ivec); 23./预处理 24. /初始化 dp 第一列 25. for(int i = 1; i m; +i)26.27.dpi0 += dpi - 10;28.29. /初始化 dp 第一行 30. for(int j = 1;

15、j n; +j)31.32.dp0j += dp0j - 1;33.34. /计算 dp 的其他部分 35. for(int i = 1; i m; +i)36.37.for(int j = 1; j n; +j)38.刺猬实习39./原始 dpij=ivecij,所以这里没有另外再加 +ivecij40.dpij += (dpi - 1j dpij - 1) ? dpij - 1 : dpi - 1j;41.42.43.cout dpm - 1n - 1 endl;44.45.return 0; 46.47.48. /以下为自己提交代码,想的直接用递归求解,但是如果数据量很大的话,这种方法容

16、易爆栈。 49. /int getAppleIn(vectorvector & ivec, int m, int n, int row, int col)50./51./if(row = m|col = n) 52./53./return 0; 54./55./else if(row = m - 1) 56./57. /int sum = 0;58. /for(int i = col; i n; +i) 59./60./sum += ivecrowi; 61./62./return sum; 63./64./else if(col = n - 1) 65./66. /int sum = 0;6

17、7. /for(int i = row; i m; +i) 68./69./sum += ivecicol; 70./71./return sum; 72./73./else 74./75. /int sum = ivecrowcol;76. /int sum1 = getAppleIn(ivec, m, n, row + 1, col);77. /int sum2 = getAppleIn(ivec, m, n, row, col + 1);78. /return sum + (sum1 sum2 ? sum2 : sum1);刺猬实习79./80./81./82./int getApple(vectorvector & ivec, int m, int n) 83./84. /int sum = getAppleIn(ivec, m, n, 0, 0);85. /return sum; 86./87./88./int main() 89./90./# if 191. /freopen(in.txt, r, stdin);92. /#endif93

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论