华为软件java笔试_华为软件笔试题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

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

num+=a[i]

i+=1

num=int(num)

j,cnt=i+1,1

while j0:

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

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<=nxboard[x][y] and board[nx][ny]

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

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<=nxboard[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

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

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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值