题目描述

现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?

输入描述:

第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)处有一个蘑菇。

输出描述:

输出一行,代表所求概率(保留到2位小数)

动态规划过程

以4*4为例

代码:

while True:try:n,m,k = map(int, input().split())mashroom = []dp = [[1.0 for i in range(m)] for j in range(n)]for _ in range(k):x,y = map(int, input().split())mashroom.append([x-1,y-1])for i in range(n):for j in range(m):if [i,j] in mashroom:dp[i][j] = 0elif i == 0 and j == 0:dp[i][j] = 1.0elif i == 0:dp[i][j] = dp[i][j-1]*(1 if i == n-1 else 0.5)elif j == 0:dp[i][j] = dp[i-1][j]*(1 if j == m-1 else 0.5)else:dp[i][j] = dp[i-1][j]*(1 if j == m-1 else 0.5) + dp[i][j-1]*(1 if i == n-1 else 0.5)print('%.2f' % dp[n-1][m-1])except:break

错误思路:

经过蘑菇路径的数量/总路径的数量;每条路径走的概率不同,使用不能这么求;

总路径的数量:

经过蘑菇路径的数量:

代码:

while True:try:n,m,k=[int(x) for x in input().split()]vers=[[0 for i in range(m)] for j in range(n)]ver_1=[[0 for i in range(m)] for j in range(n)]ver_2=[[0 for i in range(m)] for j in range(n)]for i in range(k):x,y=[int(j) for j in input().split()]vers[x-1][y-1]=1# print(vers)for i in range(n-1,-1,-1):for j in range(m-1,-1,-1):if i==n-1 and j==m-1:ver_1[i][j]=1else:if i==n-1:ver_1[i][j]=ver_1[i][j+1]if vers[i][j]==1:ver_2[i][j]=ver_1[i][j]else:ver_2[i][j] = ver_2[i][j+1]elif j==m-1:ver_1[i][j]=ver_1[i+1][j]if vers[i][j]==1:ver_2[i][j]=ver_1[i][j]else:ver_2[i][j] = ver_2[i+1][j]else:ver_1[i][j]=ver_1[i+1][j]+ver_1[i][j+1]# vers[i][j] = max(vers[i + 1][j]+vers[i][j+1],vers[i][j])if vers[i][j]==1:ver_2[i][j]=ver_1[i][j]else:ver_2[i][j] = ver_2[i + 1][j]+ver_2[i][j+1]# print(ver_1[0][0])# print(ver_2)print("{:.2f}".format((ver_1[0][0]-ver_2[0][0])/ver_1[0][0]))except:break

python 蘑菇阵相关推荐

  1. C++红与黑/蘑菇阵

    红与黑 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动.请写一个程序,计算你总共能够到达多少块黑色的瓷砖. 输入包 ...

  2. CVTE-兔子藏洞 百度-蘑菇阵 百度-钓鱼比赛

    CVTE-兔子藏洞 一只兔子藏身于20个圆形排列的洞中(洞从1开始编号),一只狼从x号洞开始找,下次隔一个洞找(即在x+2号洞找),在下次个两个洞找(即在x+5号洞找),它找了n次仍然没有找到.问兔子 ...

  3. C++编程题、红与黑/蘑菇阵

    问答题 题1:SQL 查询语句中 WHERE . GROUP BY . HAVING 这些关键字区别和用法总结错误的是? A: HAVING在查询语句中必须依赖于GROUP BY B: WHERE 子 ...

  4. [转载] python numpy--矩阵的通用函数

    参考链接: Python中的numpy.logical_xor 一.概念 通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数.你可以将其看作简单函数(接受一个或多个标量值,并产生 ...

  5. Python蘑菇代理的使用

    前些天爬虫换了一个蘑菇代理,使用起来还是蛮简单的,记录一下. 蘑菇代理隧道代理介绍 隧道代理使用 scrapy中间件的用法 # 代理服务器 # 旧的用法,已经不行,会报twisted.web.erro ...

  6. python 蘑菇丁 日报 sign

    旧接口不能用了.有人在github上发布了一个整套的代码,看着挺不错的 https://github.com/leifengwl/MoGuDing-Auto 修改这里 具体数据格式 --------- ...

  7. 支持向量机python代码_支持向量机及python实现(一)

    支持向量机英文名称Support Vector Machine简称SVM,它是由前苏联科学家Corinna Cortes在1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优 ...

  8. python引流_Python初学者也可以秒懂的Python For循环思维

    过去与许多初学者聊天过程中,许多人就算上过For循环也不太知道该如何真实使用.如同这篇文章<为什么要有For循环的存在呢?>所说大家也知道For循环非常重要,可以节省大量时间.更不用说未来 ...

  9. 百度2016研发工程师在线编程题

    题目链接:http://www.nowcoder.com/test/question/analytic?tid=1667855 [编程题]罪犯转移 C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入 ...

最新文章

  1. C++中栈和堆上建立对象的区别
  2. latex参考文献顺序不对_latex模板中,引用多篇参考文献,连续引用压缩问题
  3. linux内存管理(五)-引导内存分配器
  4. 排序算法基础+冒泡排序+冒泡排序的小优化
  5. ASP.NET编程的十大技巧
  6. 恋物志(二):独居者的智能生活指南
  7. N1盒子使用T1遥控和电视一起开关机以及按键设置
  8. Android 混淆配置
  9. python浏览器复制粘贴到word里(带格式的)
  10. 科学计算机r系数的操作,R语言实现Fleiss’ Kappa系数处理多个观察者一致性检验...
  11. go语言学习:go类型系统
  12. Istio 流量管理
  13. 软考高级信息系统项目管理师必备知识点(记忆敲出)
  14. bat 使用 7z 压缩文件夹
  15. java创建文件夹(Java创建文件夹失败重新创建)
  16. sql server 排序按笔画
  17. VRP介绍以及AC初始化配置介绍
  18. 差分放大电路在信号传输的作用及设计原理
  19. Excel给文档设置(取消)密码(打开密码和修改密码)
  20. 医疗器械标准目录 第二部分专业技术领域(2)

热门文章

  1. 工具篇-旧版火狐浏览器+旧版插件hackbar
  2. unity 水晶 石头 shader
  3. win10系统常用办公技巧
  4. 王者英雄胜率用计算机怎么算,王者荣耀英雄胜率计算哪些模式 | 手游网游页游攻略大全...
  5. 伪造HTTP请求中的IP信息
  6. 从零开始学习-python的应用范围
  7. 人工智能如何帮助缓解交通拥堵
  8. 浅谈抖音、快手、西瓜视频为什么会火
  9. 一份让HR都震撼的简历:从中专生逆袭到985硕士,逆天改命!网友:这才是真正的人才!
  10. 项目管理工具哪个好?最新排名