华为软件笔试题4.10

截断8位字符打印 AC
def ysy(board):
    n=int(board[0])
    strlist=[]
    for i in range(1,n+1):
        s=board[i]
        strlist+=mysplit(s)
    strlist.sort()
    return strlist
def mysplit(s):
    slist=[]
    i=0
    while i<len(s)-8:
        slist.append(s[i:i+8])
        i+=8
    a=s[i:]+'0'*(8-len(s[i:]))
    slist.append(a)
    return slist
if __name__=='__main__':
    board=list(input().split())
    res=ysy(board)
    print(' '.join(res))
    
括号反转字符打印 AC
def ysy(s):
    def group(a):
        num=''
        i=0
        while i<len(a) and a[i].isdigit():
            num+=a[i]
            i+=1
        num=int(num)
        j,cnt=i+1,1
        while j<len(a) and cnt>0:
            if a[j] in '{([':
                cnt+=1
            elif a[j] in '})]':
                cnt-=1
            j+=1
        return num,i,j-1
    res=''
    while s:
        cur=s[0]
        if cur.isdigit():
            num,i,j=group(s)
            res+=ysy(s[i+1:j])*num
            s=s[j+1:]
        else:
            res+=cur
            s=s[1:]
    return res
if __name__=='__main__':
    s=input()
    print(ysy(s)[::-1])
海拔路径题题目
#####90.91%测试用例
def ysy(board,n,m,ax,ay,bx,by):
    target=board[bx][by]
    start=board[ax][ay]
    mod=10**9
    visit=[[0]*m for _ in range(n)]
    visit[ax][ay]=1
    mydict={start:[[ax,ay]]}
    for tmp in range(start,target):
        if tmp in mydict:
            for index in mydict[tmp]:
                x,y=index
                for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
                    nx,ny=x+dx,y+dy
                    if 0<=nx<n and 0<=ny<m:
                        visit[x][y]+=visit[nx][ny]
                visit[x][y]=visit[x][y]%mod
                for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
                        nx,ny=x+dx,y+dy
                        if 0<=nx<n and 0<=ny<m and board[nx][ny]>board[x][y] and board[nx][ny]<target:
                            if board[nx][ny] in mydict:
                                if [nx,ny] not in mydict[board[nx][ny]]:
                                    mydict[board[nx][ny]].append([nx,ny])
                            else:
                                mydict[board[nx][ny]]=[[nx,ny]]
            del mydict[tmp]
    print(visit)
    res=0
    x,y=bx,by
    for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
        nx,ny=x+dx,y+dy
        if 0<=nx<n and 0<=ny<m:
            res+=visit[nx][ny]
    return res%mod
####内存超出 80%
def ysy(board,n,m,ax,ay,bx,by):
    target=board[bx][by]
    start=board[ax][ay]
    mod=10**9
    visit=[[0]*m for _ in range(n)]
    visit[ax][ay]=1
    mydict={}
    for i in range(n):
        for j in range(m):
            c=board[i][j]
            if start < c < target:
                x,y,f=i,j,False
                for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
                    nx,ny=x+dx,y+dy
                    if 0<=nx<n and 0<=ny<m and board[x][y]>board[nx][ny]: f=True
                if f:
                    if  c not in mydict:
                        mydict[c]=[[i,j]]
                    else:
                        mydict[c].append([i,j])
    for num in range(start+1,target):
        if num in mydict:
            for tmp in mydict[num]:
                x,y=tmp
                for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
                    nx,ny=x+dx,y+dy
                    if 0<=nx<n and 0<=ny<m:
                        visit[x][y]+=visit[nx][ny]
                visit[x][y]=visit[x][y]%mod
    res=0
    x,y=bx,by
    for dx,dy in zip([-1,0,1,0],[0,-1,0,1]):
        nx,ny=x+dx,y+dy
        if 0<=nx<n and 0<=ny<m:
            res+=visit[nx][ny]
    return res%mod
if __name__=='__main__':
    n,m=map(int,input().split())
    board=[]
    for _ in range(n):
        board.append(list(map(int,input().split())))
    ax,ay,bx,by=map(int,input().split())
    print(ysy(board,n,m,ax,ay,bx,by))


#华为##笔试题目#
全部评论
楼主,能不能请你讲一下你第二题的思路啊!
点赞 回复 分享
发布于 2019-04-14 12:43
大佬 问一下 你第二题的while s:怎么理解啊
点赞 回复 分享
发布于 2019-04-12 11:31
你在leetcode刷了多少题才能这么厉害啊,我这个菜鸡就第一道0.8,其它都不会了。。可以指下路么😭
点赞 回复 分享
发布于 2019-04-10 21:35
不知到leetcode上有没有类似到题目 第一次见到 ‘遍历路径’ 还能这样玩😂😂
点赞 回复 分享
发布于 2019-04-10 21:19
做出多少道题有面试机会啊 ?
点赞 回复 分享
发布于 2019-04-10 21:17
递归,45%
点赞 回复 分享
发布于 2019-04-10 21:16
最后一题我递归27%..
点赞 回复 分享
发布于 2019-04-10 21:14
大佬  最后一题dfs 只能18  我也是醉了 
点赞 回复 分享
发布于 2019-04-10 21:12
大佬啊
点赞 回复 分享
发布于 2019-04-10 21:08

相关推荐

12-18 22:04
已编辑
杭州电子科技大学 Java
程序员牛肉:我觉得是这样的,你现在有点病急乱投医了。你要问自己这样一个问题: 我找实习的目的是什么?为了挣钱还是增强个人实力?如果是为了挣钱那没得说,如果我是为了增强个人实习,那我异地去一个小厂实习真的有收益吗?这个收益是否大过我参加学校的项目或者自学?我记得你们杭电有那种实验室专门负责运维学校的项目的。 找实习只是一个手段而已,不要把他变成目的。不要病急乱投医。
实习简历求拷打
点赞 评论 收藏
分享
评论
6
39
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务