博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【2020秋招笔试】京东-消消乐
阅读量:2225 次
发布时间:2019-05-09

本文共 1769 字,大约阅读时间需要 5 分钟。

消消乐,>= 3个可消除掉,重力掉落,问最后最少剩几个

样例:(输入必须5 * 5, 只有1,2,3三种类型)

3 1 2 1 1
1 1 1 1 2
1 1 1 1 1
1 1 1 1 1
3 1 2 2 2
输出:4
因为,消除最后结果为:
3 0 2 0 0
0 0 0 0 2
3 0 0 0 0

import sysfrom collections import defaultdictdirection = [[1,0],[0,1],[-1,0],[0,-1]]grid = []for i in range(5):    line = sys.stdin.readline().strip()    nums = list(map(int, line.split()))    grid.append(nums)def del_grid():    global grid    s = []    for i in range(len(grid)):        if(grid[i].count(0) != 5):            s.append(grid[i])            return sdef judge(r, c):    global grid         if(r < 0 or r >= len(grid) or c < 0 or c >= len(grid[0])):        return False    return Truedef maxAreaOfIsland():     global grid            Area = 0    i, j = 0, 0        while(i < len(grid) and j < len(grid[0])):        vis = [[0 for k in range(len(grid[0]))] for w in range(len(grid))]        if(grid[i][j] != 0):            tar = grid[i][j]                        Area = dfs(i, j, tar, vis)                        if(Area >= 3):                a = dfs_(i, j, tar)                grid = del_grid()                maxAreaOfIsland()        j = j + 1        if(j == len(grid[0])):            i += 1            j = 0    returndef dfs_(r, c, tar) :    global grid    if (judge(r,c) == False or grid[r][c] != tar):        return 0    grid[r][c] = 0    area = 1    for d in direction:        area += dfs_(r + d[0], c + d[1], tar)    return areadef dfs(r, c, tar, vis):    global grid            if (judge(r,c) == False or grid[r][c] != tar or vis[r][c] == 1):        return 0        vis[r][c] = 1    area = 1    for d in direction:        area += dfs(r + d[0], c + d[1], tar, vis)    return areat = 0maxAreaOfIsland()for i in range(len(grid)):    t += (grid[i].count(1) + grid[i].count(2)+ grid[i].count(3))print(t)

转载地址:http://uzmfb.baihongyu.com/

你可能感兴趣的文章
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>