京东消消乐

线下跑几个例子暂时没发现问题...记录一下
#消消乐

def gravity(grid,visited):
    # print('before:',grid)
    for col in range(5):
        cnt=0
        for row in range(4,-1,-1):
            if grid[row][col]=='x':
                cnt+=1
            elif cnt>0:
                grid[row+cnt][col]=grid[row][col]
                grid[row][col]='x'
                visited[row][col],visited[row+cnt][col]=visited[row+cnt][col],visited[row][col]
    return grid

def judge(grid,i,j):
    if i<3 and grid[i+1][j]==grid[i][j] and grid[i+2][j]==grid[i][j]:
        return True
    if j<3 and grid[i][j+1]==grid[i][j] and grid[i][j+2]==grid[i][j]:
        return True
    if i<4 and j<4 and grid[i+1][j]==grid[i][j] and grid[i][j+1]==grid[i][j]:
        return True
    if i<4 and j<4 and grid[i+1][j]==grid[i][j] and grid[i+1][j+1]==grid[i][j]:
        return True
    if i>=1 and j>0 and grid[i][j-1]==grid[i][j] and grid[i-1][j]==grid[i][j]:
        return True
    return False

while 1:
    try:
        grid=[]
        for row in range(5):
            line=list(map(int,input().split()))
            grid.append(line)
        visited=[[0 for _ in range(5)]for _ in range(5)]
        direction=[[0,1],[1,0],[-1,0],[0,-1]]
        for k in range(5):
            for g in range(5):
                que = [[k, g]]
                num = grid[k][g]
                if num=='x' or visited[k][g] or not judge(grid,k,g):
                    continue
                else:
                    flag=0
                    while que:
                        i,j=que.pop(0)
                        for x,y in direction:   #满足两个以上则可以消除
                            if i+x>=0 and j+y>=0 and i+x<5 and j+y<5 and not visited[i+x][j+y] and grid[i+x][j+y]==num:
                                visited[i+x][j+y]=1
                                grid[i+x][j+y]='x'
                                flag+=1
                                que.append([i+x,j+y])
                    if flag>0:
                        visited[k][g]=1
                        grid[k][g]='x'
                        grid=gravity(grid,visited)
        print(grid)
        cnt=25
        for i in range(5):
            cnt-=grid[i].count('x')
        print(cnt)

    except:
        break


#京东#
全部评论

相关推荐

如题,这操作。。。。
真烦好烦真烦:既想享受国家的招聘应届生福利,又不想培养新人,我只能说这种企业的ld太过分了
投递美的集团等公司6个岗位 >
点赞 评论 收藏
分享
可以不说话:笔试a了3道半,今天说是挂了😭😭
投递汇丰科技等公司8个岗位
点赞 评论 收藏
分享
牛客10001:问就是六个月,全国可飞,给钱就干
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客企业服务