2016.4.3 腾讯实习生笔试编程题解
来源:互联网 发布:php 跨域 header 编辑:程序博客网 时间:2024/06/06 12:22
<span style="font-size:14px;">############################################ 打印蛇形矩阵 2016.4.3# 2016.4.3 腾讯笔试题编程1(稍微耐心点就行)def snake(n): mat = [[0]*n for i in range(n)] w,s,a,d = 0,n,0,n num = 0 flag = 'left' while num<n*n: if flag=='left': for i in range(a,d): num += 1 mat[w][i] = num w += 1 flag = 'down' elif flag=='down': for i in range(w,s): num += 1 mat[i][d-1] = num d -= 1 flag = 'right' elif flag=='right': for i in range(d-1,a-1,-1): num += 1 mat[s-1][i] = num s -= 1 flag = 'up' elif flag=='up': for i in range(s-1,w-1,-1): num += 1 mat[i][a] = num a += 1 flag = 'left' return matimport pprintpprint.pprint(snake(7))</span>
运行结果如下:
第一题:打印蛇形矩阵(如上)
第二题:求字符串中的最长回文串
本质还是最长公共子序列问题,将原串与反转串求LCS即得解
<span style="font-size:14px;">############################################ 算法导论-动态规划子序列2 2016.4.3def max_sublist(A,B): nA,nB = len(A),len(B) c = [[0]*(nB+1) for i in range(nA+1)] # 注意c要多留一列 flag = [['']*nB for i in range(nA)] for i in range(nA): for j in range(nB): if A[i]==B[j]: # c[i+1][j+1] 对应于 flag[i][j] c[i+1][j+1] = c[i][j] + 1 flag[i][j] = 'zs' # ↖左上方向 else: if c[i][j+1] > c[i+1][j]: flag[i][j] = 's' # 上方向 c[i+1][j+1] = c[i][j+1] else: flag[i][j] = 'z' # 左方向 c[i+1][j+1] = c[i+1][j] return flag, c[i+1][j+1]# flag 指明了从后往前查找的方向def print_max_sublist(flag, A, i=None, j=None): i=len(flag)-1 if not i else i j=len(flag[0])-1 if not j else j res = '' while i>=0 and j>=0: if flag[i][j]=='zs': res = A[i] + res i-= 1 j-= 1 elif flag[i][j]=='z': j -= 1 else: i -= 1 return res def test_max_sublist(): A = 'ACCGGTCGAGTGCGCGGAAGCCGGCCGAA' # +'ABCWDADDACAWDADAWDWDWDASDADSDAS' B = 'GTCGTTCGGAATGCCGTTGCTCTGTAAA' # +'ABCWDADDFEDADAWDWCAWDASDADSDAS' flag, c = max_sublist(A, B) res = print_max_sublist(flag, A) print A,'\n',B print 'max subsequence length:', c print 'max subsequence:\n', res test_max_sublist() # memo的空间过大,实际上还可以压缩 </span>
结果如下图所示:
0 0
- 2016.4.3 腾讯实习生笔试编程题解
- 2014年腾讯实习生笔试题解析
- 2012腾讯实习生笔试的编程题一解
- 2012年腾讯实习生笔试编程题
- 2017腾讯实习生招聘笔试编程题
- 腾讯2017暑期实习生笔试题解题答案汇总
- 2014-3-29腾讯实习生笔试经验总结
- 腾讯实习生笔试归来
- 腾讯实习生笔试题
- 第一次腾讯实习生笔试
- 腾讯实习生招聘笔试
- 腾讯实习生笔试题
- 腾讯实习生招聘笔试
- 腾讯实习生笔试2012
- 腾讯实习生笔试题
- 腾讯实习生笔试经验总结
- 14腾讯实习生笔试
- 腾讯20140420实习生笔试
- Linux Mint (应用软件— 二进制文件编辑器 :bless)
- SQL取出数据库中重复的记录
- Linux畅聊系统总结
- Android编译系统简析
- KMP算法中特征值数组next的计算与使用
- 2016.4.3 腾讯实习生笔试编程题解
- PAT 乙级 1035. 插入与归并
- ajax不执行success回调而是执行error回调
- Python 中文乱码
- hdu5656CA Loves GCD(dp)
- 深入浅出K-Means算法
- Java进阶01 String类
- 设计模式:责任链模式(Chain of Responsibility)
- 【笔记】 《js权威指南》- 第9章 类和模块 - 9.8 类 ECMAS5