算法课设——逃狱的汉尼拔博士
题目:杀人狂魔汉尼拔博士逃狱了。通缉令发布后,大量军警出动并实施全天候追捕,不过狡猾的汉尼拔博士并没有落网。过了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;
}
算法课设——逃狱的汉尼拔博士相关推荐
- 江苏大学公交系统(数据结构与算法课设版C++)
江苏大学公交系统(数据结构与算法课设版C++) 目录 江苏大学公交系统(数据结构与算法课设版C++) (1)题目要求 (2)功能要求 (3) 结构 (4) 不足 附录 (1)题目要求 为2022级新生 ...
- 算法课设第三题:3.Luck 的旅行计划(最短路径算法)
题目描述 Luck 是一名热爱旅游的羊驼,在即将到来的毕业假期她计划去多个地点旅游,但她还 没有安排旅游顺序,现在,Luck 有 n 个计划中想去的城市,她找到了连接这些城市的 m 条 双向道路,为了 ...
- 卫星系统算法课设(一)-志明老师
问题 1 选题介绍 当前,卫星移动通信.气象预报.遥感探测.军事侦察.资源勘探.灾害监测.导航定位等多个领域发挥着越来越重要的作用.而且,在一般的航天任务应用中,我们往往需要使用一群卫星共同来完成任务 ...
- 操作系统课设之虚拟内存页面置换算法的模拟与实现
前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...
- 《数据结构课设》弗洛伊德算法设计校园导游系统
大二上学期的数据结构课设分享一下,具体题目如下: 题目27:"校园导游系统"的设计与实现 1.问题描述 设计一个校园导游系统,为来访的客人提供信息查询服务. 2.基本要求 (1)从 ...
- 操作系统课设--虚拟内存
山东大学操作系统课设lab7 实验七 虚拟内存(lab7) 实验目的 实验环境 实验思路 关键源代码注释以及程序说明 调试记录 实验七 虚拟内存(lab7) 实验目的 在未实现虚拟内存管理之前,Nac ...
- 操作系统课设--扩展文件系统
山东大学操作系统课设lab4 实验四 扩展文件系统(lab4) 概念欠缺 实验目的 实验环境: 实验思路: 关键源代码注释以及程序说明: 调试记录: 实验四 扩展文件系统(lab4) 概念欠缺 ifd ...
- 操作系统课设--具有优先级的线程调度
山东大学操作系统课设lab2 实验二 具有优先级的线程调度(lab2) 概念欠缺 实验环境 实验目的 1. 熟悉Nachos原有的线程调度策略 2. 设计并实现具有优先级的线程调度策略 实验二 具有优 ...
- 计算机组成原理设计一个累加和,组成原理课设关于累加器.doc
组成原理课设关于累加器 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:计算机组成原理课程设计 课程设计题目:COP2000实现数据累加 院(系):计算机学院 专 业:计算机科学与技术 班 级 ...
- 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)
一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...
最新文章
- 现金奖励+实习offer!数据库大赛来了
- python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法
- 蓝桥学院2019算法题1.7
- 去邵程程博客,得到很有喜感图片一张
- Python爬虫入门教程石家庄链家租房数据抓取
- 让逻辑关系破缺的最小空间尺寸
- 网站开发技巧参考大全
- Last non-zero Digit in N! HDU - 1066
- MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下
- mysql面试吗hi提_面试必备的10道MySQL题
- DB层面上的设计 分库分表 读写分离 集群化 负载均衡
- anaconda安装torch_零基础入门PyTorch:怎样用?有哪些优势?手把手带你安装配置...
- 传智播客黑马程序员Java学习笔记(一)
- OpenCV4学习笔记(71)——散焦图像去模糊滤波
- Ubuntn16.04 迅雷安装
- awscli配置Access key ID和Secret access key
- BOM制作系列之一:BOM拆分
- cPanel/WHM前台后台的常用操作
- 如何安全上网-浏览器隐私防护
- 关于H3C光模块和华为光模块的型号大全
热门文章
- 支付宝首页搜索栏淡出效果HTML,jQuery实现仿Alipay支付宝首页全屏焦点图切换特效...
- PPT:WMS仓储系统解决方案
- odoo异常:Expected singleton: res.users()
- 专访美团外卖曹振团:天下武功唯快不破
- FPGA电源设计总结
- Java实现复数运算
- 流量卡之家:英国运营商推出5G无限流量套餐 每月约300元
- Matlab程序——3d玫瑰
- 如何在VR全景作品中添加独立热点?
- python组合数据类型分类_《Python程序设计与案例教程》课件chap6组合数据类型.ppt...