Bob还在棋盘中的概率

2024-05-25 21:20
文章标签 棋盘 概率 bob

本文主要是介绍Bob还在棋盘中的概率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:给定5个参数,N,M,row,col,K,表示在N*M的区域上,醉汉Bob初始在(row,col)位置,Bob一共要迈出K步,且每步都会等概率向上下左右的4个方向之一走一个单位,任何时候Bob只要离开N * M区域,就直接死亡,返回K步之后,Bob还在N * M区域中的概率。

way:初始在某点的概率=在某点可以生存下来的路线数/在某点可以走的总路线数(4的K次方)(K步)。

#include<iostream>
#include<vector>
using namespace std;//目前在row, col位置,还有rest步要走,走完之后如果还在棋盘中就获得一种生存路线方案,返回总的生存方案数
long process(int row, int col, int rest, int N, int M)
{//超出区域,死if(row<0 || row==N || col<0 || col==M){return 0;}//否则就是还在棋盘中,返回一种生存方案if(rest==0) return 1;int ways=0;ways+=process(row-1, col, rest-1, N, M);ways+=process(row+1, col, rest-1, N, M);ways+=process(row, col-1, rest-1, N, M);ways+=process(row, col+1, rest-1, N, M);return ways;
}double livePosibility1(int row, int col, int K, int N, int M)
{return (double)process(row,col,K,N,M)/pow(4,K);
}

way2:dp版

//改dp
long long pick(int x, int y, int rest, int N, int M, vector<vector<vector<long long>>>dp)
{//超出区域,死if(x<0 || x==N || y<0 || y==M){return 0;}return dp[x][y][rest];
}double livePosibility2(int row, int col, int K, int N, int M)
{vector<vector<vector<long long>>>dp(N, vector<vector<long long>>(M, vector<long long>(K+1)));for(int i=0; i<N; i++){for(int j=0; j<M; j++){dp[i][j][0]=1;}}for(int rest=1; rest<=K; rest++){for(int i=0; i<N; i++){for(int j=0; j<M; j++){long long ways=0;ways+=pick(i-1, j, rest-1, N, M, dp);ways+=pick(i+1, j, rest-1, N, M, dp);ways+=pick(i, j-1, rest-1, N, M, dp);ways+=pick(i, j+1, rest-1, N, M, dp);dp[i][j][rest]=ways;}}}return (double)dp[row][col][K]/pow(4,K);
}

这篇关于Bob还在棋盘中的概率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002660

相关文章

概率之常用概率分布

1. Bernoulli分布 单个二值随机变量的分布。它由单个参数控制,给出了随机变量等于1的概率。它具有如下的一些性质。 2. Multinoulli分布 Multinoulli分布(multinoulli distribution)或者范畴分布(categorical distribution)是指在具有k个不同状态的单个离散型随机变量上的分布,其中k是一个有限值。

概率之基础概念

1 概率分布(probability distribution) 用来描述随机变量或一簇随机变量在每一个可能取到的状态的可能性大小。描述概率分布的方式取决于随机变量是离散的还是连续的。 离散型变量和概率质量函数(probability mass function, PMF) 离散型随机变量的概率分布可以用PMF来描述。通常使用大写字母P来表示PMF。例如。 PMF将随机变量能够取得的每个状

概率p输出1,概率1-p输出0,等概率输出0和1

有个输出0和1的BIASED RANDOM,它以概率p输出1,以概率1-p输出0,以此RANDOM函数为基础,生成另一个RANDOM函数,该函数以1/2的概率输出1,以1/2的概率输出0 题目解答: 两次调用该RANDOM函数,如果其概率为P(x),调用2次 P(1) = p       P(0) = 1-p P'(1) =p      P'(0) = 1-p 概率如下: 11

Matlab 单目相机标定(内置函数,棋盘格)

文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 具体的标定原理可以参阅之前的博客Matlab 单目相机标定(内置函数),这里实现对棋盘格数据的标定过程。 二、实现代码 getCameraCorners.m function [camCorners, usedImIdx, imCheckerboard] = getCameraCorners(cali

头歌资源库(14)残缺棋盘

一、 问题描述  二、算法思想   首先,将2^k × 2^k的棋盘划分为四个相等大小的子棋盘,定义为左上、左下、右上和右下四个子棋盘。 然后,根据残缺格的坐标,确定其中一个子棋盘是不完整的,即残缺子棋盘。假设残缺子棋盘是左上子棋盘。 接下来,分以下三种情况进行处理: 当k=1时,即棋盘大小为2×2时,直接填充序号即可。 当残缺子棋盘的坐标位于左上子棋盘的右下角时,将左上子棋盘的

[LightOJ 1321] Sending Packets (SPFA+概率DP)

LightOJ - 1321 给定一张无向图,每条边都有一个通过的概率 如果无法通过,那么就要回到起点重新出发 从起点到终点的时间固定为 K K,如果成功到达, 又需要额外花费 KK的时间,问走 S S次的最小期望时间首先可以跑一遍SPFA求出一次通过的最大概率 pp 设跑一次的最小期望时间为 E E,E=p×2K+(1−p)×(E+2K)E = p\times 2K + (1-

[LightOJ 1265] Island of Survival (概率)

LightOJ - 1265 一个岛上有若干只虎,若干只鹿,一个人 每天只有两个动物会相见 如果人和虎相见,人死 如果鹿和虎相见,鹿死 如果虎和虎相见,虎死 其他情况均没有伤亡,各种情况均等概率 问人活到虎全死光的概率有多少 感觉二维dp直接搞正确性很显然 但是网上有另一种做法,就是直接忽略掉鹿的存在,当没有鹿 不是很懂这样做的正确性,网上的解释是鹿吃与被吃, 与人

一个抽奖函数(自定义中奖项数和概率)

<? /* * 一个抽奖类,精确到万分之一 * 三个步骤:1.接受一个中奖概率数组;2.接受一个抽奖种子;3.返回中奖等级 */ class Lottery { /* * 中奖概率数组,自动判断奖项数目 * 数组键值和为100,自动计算出不中奖的概率,若初始是超过100抛出一个错误 */ protected $_rate = array(); /* * 设置中奖概率, * @param Ar

利用随机数实现指定概率抽奖

一、随机数与概率的规律 假设我们使用随机数生成器,可以产生1-100范围内随机数。 那么每次产生的随机数,其值可能是1-100范围内任意一个数,每个数的概率均等。 所以可以得出,随机数值V与概率P,有如下规律: 数值(V)概率(P)1 <= V <= 100100%V < 1 或 V > 1000%1 <= V <= 5050%50 <= V <= 10050%1 <= V <= 2020

概率的三条基本公理 | 布尔不等式的应用(举例)

概率论的三条基本公理由俄罗斯数学家柯尔莫哥洛夫(Andrey Kolmogorov)在1933年提出,被称为柯尔莫哥洛夫公理。它们构成了现代概率论的基础。这三条公理如下: 公理 1:非负性 公理 2:规范性 公理 3:可加性 布尔不等式 对于任意的事件集合 { A 1 , A 2 , … , A n } \{A_1, A_2, \ldots, A_n\} {A1​,A2​,…,An​}