题目描述

现在有两个好友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. 函数 tostring_Kotlin实战之Fuel的高阶函数
  2. 关于JAVA调用dll的学习总结
  3. java测试时找不到类,我在class文件运行不了测试文件,提示找junit4找不到任何的测试项目...
  4. 学习笔记之与 30 家公司过招,得到了这章面试心法
  5. unity update 协程_Unity协程,停止协程及yield return使用_019
  6. 利用UDEV服务解决RAC ASM存储设备名
  7. u盘分为windows和linux启动,【电脑软件】Ventoy 官方版,一个U盘,同时拥有启动win+linux+Ubuntu...
  8. 覆盖的面积 HDU - 1255 (扫描线, 面积交)
  9. 前端通过ajax请求一次性上传多张图片到后台
  10. 新闻发布系统(java实现)+论文
  11. vue 调微信jsapi
  12. 考研学java还是c语言,想学习Java,应该选择就业还是考研?
  13. 对1bit的脉冲信号进行展宽,转为32bit位宽,并产生有效信号
  14. 带着问题重学 Java 并发编程
  15. 哈代-温伯格平衡定律(The Hardy-Weinberg Equilibrium)
  16. vscode-armgcc-openocd搭建STM32开发调试环境
  17. java 查看对象内存占用大小
  18. 智能家居中控屏(一):产品介绍
  19. 项目资源管理的流程、技术和工具
  20. 对日软件外包项目问题探讨

热门文章

  1. makefile自动变量与隐晦规则推导
  2. nuxt3:我们开始吧-开发-配置-部署
  3. 一岁一礼 一寸欢喜 | 三分尽兴 七分惊喜 | 齐飞20了
  4. Java基础之流程控制语句
  5. O2O的死亡名单,互联网+还能走多远
  6. eFPGA设计开源框架 FABulous 系列(一)开发环境搭建
  7. 三星android 7.0,三星S7升级Android7.0在即 新增Samsung Pass功能
  8. 个人技能知识图谱——校园篇
  9. *js:;是什么意思?怎么用呢
  10. tensorflow 按维度相加_终于亮大招,Pioneer DJ号称全新维度的CDJ-3000到底如何?_品牌头条_新闻...