是时候刷笔试题目了
Posted zhangbo2008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是时候刷笔试题目了相关的知识,希望对你有一定的参考价值。
基础很差,计算机操作系统,组成原理,网络都不懂.我就以题带学了
https://www.nowcoder.com/contestRoom?filter=0&orderByHotValue=1&mutiTagIds=179&page=1
就从美团做起.
美团点评2017秋招笔试编程题 全部自己写的ac代码.都是左神讲过的题目!自己掌握还是不好.
#美团2017笔试 ‘‘‘ 给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多, 编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 ‘‘‘ a=input() a=int(a) memo={} list1=[1,5,10,20,50,100] def main(num,a):#只用[1,5,10,20,50,100][:num+1]来组合答案多少来组a元:背包问题 if (num,a) in memo: return memo[(num,a)] if num==0: return 1 maxi=a//list1[num] output=0 for i in range (maxi+1): output+=main(num-1,a-list1[num]*i) memo[(num,a)]=output return output print(main(5,a)) ‘‘‘ 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时 可以走两步,点数为n时可以走n步。求玩 家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法。 ‘‘‘ a=input() a=int(a) def main(num): if num==0: return 0 if num==1: return 1 if num-1>=0: tmp= main(num-1)+1 if num-2>=0: tmp= main(num-2)+tmp if num-3>=0: tmp= main(num-3) +tmp if num-4>=0: tmp= main(num-4) +tmp if num-5>=0: tmp= main(num-5) +tmp if num-6>=0: tmp= main(num-6) +tmp return tmp print(main(a)) #第三题单调栈比较复杂先写最后一个 #第四题:修改kmp算法.kmp只是判断a是不是b的子串.好像直接动态规划就行. #第四题: ‘‘‘ 给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 ‘‘‘ a=input() b=input() if len(a)>len(b): a,b=b,a def main(a,b): if len(a)==0 or len(b)==0 or a==None or b==None or a==‘‘ or b==‘‘: return 0 maxi=0 for i in range(len(a)): for j in range(len(a),i,-1): for ii in range(len(b)): jj=ii+j-i if a[i:j]==b[ii:jj]: out=j-i if maxi<out: maxi=out return maxi print(main(a,b)) ‘‘‘ disanti ‘‘‘ ‘‘‘ 第三题: [编程题] 最大矩形面积 时间限制:1秒 空间限制:32768K 给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子 的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。 单调栈即可,并且是一个不用处理重复值的单调栈,比较简单 ‘‘‘ chang=input() list1=input().split(‘ ‘) chang=int(chang) for i in range(len(list1)): list1[i]=int(list1[i]) zhan=[] i=0 area=0 while i<chang:#zhan中维护的是索引 tmp=list1[i] if len(zhan)==0: zhan.append(i) i+=1 continue if tmp>list1[zhan[-1]]: zhan.append(i) i+=1 else: now=list1[zhan.pop()] if zhan!=[]: areanow=(i-zhan[-1]-1)*now if areanow>area: area=areanow else: areanow=(i)*now if areanow>area: area=areanow #都弹完了还剩一些元素,继续处理即可. for i in range(len(zhan)-1,-1,-1): if i !=0: areanow=list1[zhan[i]]*(chang-zhan[i-1]-1) if areanow>area: area=areanow if i==0: areanow=list1[zhan[i]]*(chang) if areanow>area: area=areanow print(area) ‘‘‘ 7 2 2 5 6 2 3 2 你妈第三题改了好多遍才过,写的虽然逻辑对,但是确实很别扭,和繁琐. n = int(input()) h = [int(x) for x in input().split()]#我靠,原来大神是这么写的读取数据 ‘‘‘
以上是关于是时候刷笔试题目了的主要内容,如果未能解决你的问题,请参考以下文章