-
给定一个n*m的迷宫,如
S..
..#
E.E
其中,S代表开始位置,#代表不可行走的墙,E代表出口。
主人公从开始位置出发,每次等概率的随机选择下一个可以行走的位置,直到到达某一个出口为止。
现在他想知道,在这一概率事件中,它从开始位置走到某一个出口的期望步数是多少。- 输入:
-
输入包含多组测试用例,每组测试用例由两个整数n,m(1<=n,m<=15)开始,代表迷宫的大小
接下去n行每行m个字符描述迷宫信息,具体规则如题面所述。
数据保证至少存在一个E和一个S,但可能存在多个E。- 输出:
-
输出一个浮点数,表示他走出迷宫的期望步数,保留两位小数。若主人公不可能走出迷宫,输出-1。
- 样例输入:
-
1 2 SE 2 2 S. .E 1 3 S#E
- 样例输出:
-
1.00 4.00 -1
- 提示:
-
走到.之后会有几率往回走。
题意:
有一个起点S,多个出口E,#代表不能走,每次等概率的随机选择下一个可以行走的位置,求从S到出口的期望。
思路:
先bfs预处理能到达的点,不能到达终点则输出-1,否则dp。
dp[i]-到达i点后要到达终点需要的步数的期望。
对每一个能到达的点x0,假设其相邻的能到达的点有x1、x2、x3.
则dp[x0]=1+dp[x1]/3+dp[x2]/3+dp[x3];
ps:注意可能有多个终点,终点的期望都为0.
代码:
#include#include #include #include #include #include #include
- <script type="text/java script">BAIDU_CLB_fillSlot("771048");
- 点击复制链接 与好友分享! 回本站首页 <script> function copyToClipBoard(){ var clipBoardContent=document.title + '\r\n' + document.location; clipBoardContent+='\r\n'; window.clipboardData.setData("Text",clipBoardContent); alert("恭喜您!复制成功"); }
<script type="text/java script" id="bdshare_js" data="type=tools&uid=12732"> <script type="text/java script" id="bdshell_js"> <script type="text/java script"> var bds_config = {'snsKey':{'tsina':'2386826374','tqq':'5e544a8fdea646c5a5f3967871346eb8'}}; document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js cdnversion=" + Math.ceil(new Date()/3600000) - 您对本文章有什么意见或着疑问吗?请到 论坛讨论您的关注和建议是我们前行的参考和动力
- 相关文章
- <script type="text/java script">BAIDU_CLB_fillSlot("182716");
- <script type="text/java script">BAIDU_CLB_fillSlot("517916");
- 图文推荐
<iframe src="http://www.2cto.com/uapi.php tid=301740&catid=339&title=vsW2yG9qICDM4sS/MTU0NqO6w9S5rM7KzOIgIKOouMXCymRwIGd1ZXNzz/vUqqOp&forward=http://www.2cto.com/kf/201405/301740.html" width="100%" height="100%" id="comment_iframe" name="comment_iframe" frameborder="0" scrolling="no">- <script type="text/java script">BAIDU_CLB_fillSlot("771057");
题目链接:点击打开链接
题目描述:



