题目:杀人狂魔汉尼拔博士逃狱了。通缉令发布后,大量军警出动并实施全天候追捕,不过狡猾的汉尼拔博士并没有落网。过了d日后,束手无策的警察们拜访了有着“编程天才”之称的查理教授。查理教授对汉尼拔博士留在监狱的笔记本进行分析后,做出了如下假设。
1)汉尼拔博士为了避开检查,只走山路;
2)汉尼拔博士越狱当天选择了与监狱相邻的村子之一作为藏身之处;
3)汉尼拔博士为了逃避追捕,每天往一个相邻的村子逃窜。
为了验证假设,教授找到了与监狱所在村子以山路连接的n个村子的地图。汉尼拔博士会按照此假设行动,而且会随机选择一个备选的村子。编写程序计算d日后汉尼拔博士在各个村子的概率。
例如监狱在第三个村子,逃狱后的汉尼拔博士会在0、1、2、4、5中任意选择一个村子藏身。因此,1天后汉尼拔博士藏在第0号村子的概率是1/5,两天后藏在第1号村子的概率是1/15。
杀人狂魔汉尼拔博士逃狱了。通缉令发布后,大量军警出动并实施全天候追捕,不过狡猾的汉尼拔博士并没有落网。过了d日后,束手无策的警察们拜访了有着“编程天才”之称的查理教授。查理教授对汉尼拔博士留在监狱的笔记本进行分析后,做出了如下假设。
1)汉尼拔博士为了避开检查,只走山路;
2)汉尼拔博士越狱当天选择了与监狱相邻的村子之一作为藏身之处;
3)汉尼拔博士为了逃避追捕,每天往一个相邻的村子逃窜。
为了验证假设,教授找到了与监狱所在村子以山路连接的n个村子的地图。汉尼拔博士会按照此假设行动,而且会随机选择一个备选的村子。编写程序计算d日后汉尼拔博士在各个村子的概率。
例如监狱在第三个村子,逃狱后的汉尼拔博士会在0、1、2、4、5中任意选择一个村子藏身。因此,1天后汉尼拔博士藏在第0号村子的概率是1/5,两天后藏在第1号村子的概率是1/15。

输入

第一行输入测试用例的个数C(1≤C≤50)。之后各行输入地图上显示的村子个数N(2≤N≤50)和逃狱后经过的天数D(1≤D≤100),以及监狱所在村子的号码P(0≤P<N),村子的号码由0到N-1的数字组成。之后N行里各输入N个整数,形成一个序列A。第i行j列的数值A[i][j]如果等于1,就表示从第i号村子到第j号村子有山路可走;如果是0,则表示无路可通。接下来的一行输入要计算概率的村子的个数T(0≤T<N),最后一行以整数型输入要计算概率的村子的号码Q(0≤Q<N)。

如果一个村子与另一个村子相连,那么相反的路径也必定存在。可假设一个村子连接到自身的路径不存在。

输出

每个测试用例以T个实数输出汉尼拔博士可能藏匿的概率。存在小于10-7的绝对/相对误差的答案将被视为正确答案。

示例输入值

2

5 2 0

0 1 1 1 0

1 0 0 0 1

1 0 0 0 0

1 0 0 0 0

0 1 0 0 0

3

0 2 4

8 2 3

0 1 1 1 0 0 0 0

1 0 0 1 0 0 0 0

1 0 0 1 0 0 0 0

1 1 1 0 1 1 0 0

0 0 0 1 0 0 1 1

0 0 0 1 0 0 0 1

0 0 0 0 1 0 0 0

0 0 0 0 1 1 0 0

4

3 1 2 6

示例输出值

0.83333333     0.00000000     0.16666667

0.43333333     0.06666667     0.06666667     0.06666667

代码如下
#include<iostream>
using namespace std;
const int NUM = 50;
struct map
{int link[NUM][NUM];//保存路线图的连通性int prison;//监狱地点int all;//村庄个数
};
double jisuan(int end, int days, struct map *df, int near[NUM])//逃犯在end村 已经逃亡days天
{if (days == 0){if (end == df->prison){return (1);}elsereturn (0);}double result = 0.0;for (int i = 0; i<df->all; ++i){if ((df->link[end][i])==1){result = result + jisuan(i, days - 1, df, near) / near[i];}}return result;
}
void setmap()
{int num;cin>>num;while (num--){int days;int near[NUM];//存储与第n个村庄相邻村子个数 struct map *df;df = (map*)malloc(sizeof(map));cin >> df->all;cin >> days;cin >> df->prison;for (int i = 0; i<df->all; i++)for (int j = 0; j<df->all; j++){cin >> df->link[i][j];}int k = 0;for (int i = 0; i<df->all; i++)//计算near[]{int count = 0;for (int j = 0; j<df->all; j++){if (df->link[i][j]){count++;near[k] = count;}}k++;}int numbers;cin>>numbers;while (numbers--){int end;cin >> end;cout << jisuan(end, days, df, near) << endl;}free(df);}
}
int main()
{setmap();return 0;
}

算法课设——逃狱的汉尼拔博士相关推荐

  1. 江苏大学公交系统(数据结构与算法课设版C++)

    江苏大学公交系统(数据结构与算法课设版C++) 目录 江苏大学公交系统(数据结构与算法课设版C++) (1)题目要求 (2)功能要求 (3) 结构 (4) 不足 附录 (1)题目要求 为2022级新生 ...

  2. 算法课设第三题:3.Luck 的旅行计划(最短路径算法)

    题目描述 Luck 是一名热爱旅游的羊驼,在即将到来的毕业假期她计划去多个地点旅游,但她还 没有安排旅游顺序,现在,Luck 有 n 个计划中想去的城市,她找到了连接这些城市的 m 条 双向道路,为了 ...

  3. 卫星系统算法课设(一)-志明老师

    问题 1 选题介绍 当前,卫星移动通信.气象预报.遥感探测.军事侦察.资源勘探.灾害监测.导航定位等多个领域发挥着越来越重要的作用.而且,在一般的航天任务应用中,我们往往需要使用一群卫星共同来完成任务 ...

  4. 操作系统课设之虚拟内存页面置换算法的模拟与实现

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  5. 《数据结构课设》弗洛伊德算法设计校园导游系统

    大二上学期的数据结构课设分享一下,具体题目如下: 题目27:"校园导游系统"的设计与实现 1.问题描述 设计一个校园导游系统,为来访的客人提供信息查询服务. 2.基本要求 (1)从 ...

  6. 操作系统课设--虚拟内存

    山东大学操作系统课设lab7 实验七 虚拟内存(lab7) 实验目的 实验环境 实验思路 关键源代码注释以及程序说明 调试记录 实验七 虚拟内存(lab7) 实验目的 在未实现虚拟内存管理之前,Nac ...

  7. 操作系统课设--扩展文件系统

    山东大学操作系统课设lab4 实验四 扩展文件系统(lab4) 概念欠缺 实验目的 实验环境: 实验思路: 关键源代码注释以及程序说明: 调试记录: 实验四 扩展文件系统(lab4) 概念欠缺 ifd ...

  8. 操作系统课设--具有优先级的线程调度

    山东大学操作系统课设lab2 实验二 具有优先级的线程调度(lab2) 概念欠缺 实验环境 实验目的 1. 熟悉Nachos原有的线程调度策略 2. 设计并实现具有优先级的线程调度策略 实验二 具有优 ...

  9. 计算机组成原理设计一个累加和,组成原理课设关于累加器.doc

    组成原理课设关于累加器 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:计算机组成原理课程设计 课程设计题目:COP2000实现数据累加 院(系):计算机学院 专 业:计算机科学与技术 班 级 ...

  10. 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)

    一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...

最新文章

  1. 现金奖励+实习offer!数据库大赛来了
  2. python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法
  3. 蓝桥学院2019算法题1.7
  4. 去邵程程博客,得到很有喜感图片一张
  5. Python爬虫入门教程石家庄链家租房数据抓取
  6. 让逻辑关系破缺的最小空间尺寸
  7. 网站开发技巧参考大全
  8. Last non-zero Digit in N! HDU - 1066
  9. MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下
  10. mysql面试吗hi提_面试必备的10道MySQL题
  11. DB层面上的设计 分库分表 读写分离 集群化 负载均衡
  12. anaconda安装torch_零基础入门PyTorch:怎样用?有哪些优势?手把手带你安装配置...
  13. 传智播客黑马程序员Java学习笔记(一)
  14. OpenCV4学习笔记(71)——散焦图像去模糊滤波
  15. Ubuntn16.04 迅雷安装
  16. awscli配置Access key ID和Secret access key
  17. BOM制作系列之一:BOM拆分
  18. cPanel/WHM前台后台的常用操作
  19. 如何安全上网-浏览器隐私防护
  20. 关于H3C光模块和华为光模块的型号大全

热门文章

  1. 支付宝首页搜索栏淡出效果HTML,jQuery实现仿Alipay支付宝首页全屏焦点图切换特效...
  2. PPT:WMS仓储系统解决方案
  3. odoo异常:Expected singleton: res.users()
  4. 专访美团外卖曹振团:天下武功唯快不破
  5. FPGA电源设计总结
  6. Java实现复数运算
  7. 流量卡之家:英国运营商推出5G无限流量套餐 每月约300元
  8. Matlab程序——3d玫瑰
  9. 如何在VR全景作品中添加独立热点?
  10. python组合数据类型分类_《Python程序设计与案例教程》课件chap6组合数据类型.ppt...