模拟一个实验室的机器网络(M行N列的矩阵)被病毒感染的过程(熊猫烧香)
2012-07-02 14:28
363 查看
《数据结构》课程设计报告书(地址:http://apenny.taobao.com/)
1、实验任务与目的(简单介绍实验内容,说明实验任务和目的)
“熊猫烧香”是在网络中传播的一种著名病毒。现在某实验室的网络不幸感染了这种病毒。从教材P126的图6.5可以看到,实验室的机器排列为一个M行N列的矩阵,每台机器只和它相邻的及其直接相连。开始时有T台机器被感染,每台遭遇的熊猫变种类型都不同,分别记为Type1,Type2,…..,Typer。每台机器都具有一定级别的防御能力,将防御级别记为L(0<L<1000)。“熊猫烧香”按照下列规则迅速在网络中传播:
(1)病毒只能从一台被感染的及其传到另一台没有被感染的机器;
(2)如果一台机器已经被某个变种的病毒感染过,就不能再被其他变种感染;
(3)病毒的传播能力每天都在增强。第1天,病毒只能感染它可以到达的、防御级别为1的机器,而防御级别大于1的机器可以阻止它从自己处继续传播。第D天,病毒可以感染它可以达到的、防御级别不超过D的机器,而只有防御级别大于D的机器可以阻止它从自己处继续传播。
(4)同一天之内,Type1变种的病毒先开始传播,感染所有它可能感染的及其,然后是Type2变种、Type3变种…….依次进行传播。
实验要求是:当整个网络被感染后,计算有多少台机器被某个特定变种所感染。
【输入要求】
程序的输入数据由input.txt文件读入,文件包含若干组测试数据。每组数据的第1行包含2个整数M和N(1≤M,N≤500),接下来是一个M*N的矩阵表示网络的初试感染状态,其中用负整数-L表示未被感染、防御级别为L的机器,正整数Typei表示该机器被Typei类型的病毒变种感染。
下一行给出一个正整数Q,是将要查询的变种的个数。接下去的Q行里,每行给出一个变种类型。
当M或N为0时,表示全部测试结束,不要对该数据做任何处理。
【输出要求】
对每一组测试,在一行里输出被某个特定变种所感染的机器数量,并测试结果写入output.txt文件。
本实验训练的内容包括六个方面:
(1)面向对象程序设计方法,类模板的应用;
(2)采用合适的求解问题算法,如广度优先搜索、Dijkstra算法、并查集等;
(3)矩阵存储;
(4)文件的读写操作;
(5)程序测试计划、用例的设计和测试方法。
1、设计要求:
模拟一个实验室的机器网络(M行N列的矩阵)被病毒感染的过程,每台机器只和它相邻的机器直接相连。开始时有T太机器被感染,每台遭遇的熊猫变种类型都不同,分别记为Type1,Type2,……TypeT。每台机器都具有一定级别的防御能力,记为L(0<L<1000)。
2、病毒的传播规则:
(1)病毒只能从一台被感染的机器传到另一台没有被感染的机器。
(2)如果一台机器已经被某个变种的病毒感染过,就不能再被其他变种感染。
(3)病毒的传播能力每天都在增强。以D代表病毒的攻击等级,初始值为1,每天增加1,可以感染所有可以到达的防御级别小于病毒自身攻击级别的机器。当L大于D的时候可以组织病毒从自己处继续传播。
(4)同一天内,由1号变种病毒先开始传播,感染所有它可能感染的机器,然后Type2、Type3……依次经行传播。
3、程序的要求:
(1)输入要求:
输入由若干组测试数据组成。
每组数据的第一行包含2个整数M和N(1=<M,N=<500),接下来是一个M*N的矩阵表示网络的初始感染状态,其中的正、负整数的意义如题目描述中所定义。
下面一行给出一个正整数Q,是将要查询的变种的个数。接下去的Q行里,每行给出一个变种的类型。
当M或N为0时,表示全部测试结束,不要对该数据做任何处理。
(2)输出要求:
对每一组进行测试,在一行里输出被某个特定变种所感染的机器的数量。
(3)输入输出例子:
输入:
3 4
1-3 -2 -3
-2 -1-2 2
-3 -2 -1-1
2
1
2
0 0
输出:
9
3
1、实验任务与目的(简单介绍实验内容,说明实验任务和目的)
“熊猫烧香”是在网络中传播的一种著名病毒。现在某实验室的网络不幸感染了这种病毒。从教材P126的图6.5可以看到,实验室的机器排列为一个M行N列的矩阵,每台机器只和它相邻的及其直接相连。开始时有T台机器被感染,每台遭遇的熊猫变种类型都不同,分别记为Type1,Type2,…..,Typer。每台机器都具有一定级别的防御能力,将防御级别记为L(0<L<1000)。“熊猫烧香”按照下列规则迅速在网络中传播:
(1)病毒只能从一台被感染的及其传到另一台没有被感染的机器;
(2)如果一台机器已经被某个变种的病毒感染过,就不能再被其他变种感染;
(3)病毒的传播能力每天都在增强。第1天,病毒只能感染它可以到达的、防御级别为1的机器,而防御级别大于1的机器可以阻止它从自己处继续传播。第D天,病毒可以感染它可以达到的、防御级别不超过D的机器,而只有防御级别大于D的机器可以阻止它从自己处继续传播。
(4)同一天之内,Type1变种的病毒先开始传播,感染所有它可能感染的及其,然后是Type2变种、Type3变种…….依次进行传播。
实验要求是:当整个网络被感染后,计算有多少台机器被某个特定变种所感染。
【输入要求】
程序的输入数据由input.txt文件读入,文件包含若干组测试数据。每组数据的第1行包含2个整数M和N(1≤M,N≤500),接下来是一个M*N的矩阵表示网络的初试感染状态,其中用负整数-L表示未被感染、防御级别为L的机器,正整数Typei表示该机器被Typei类型的病毒变种感染。
下一行给出一个正整数Q,是将要查询的变种的个数。接下去的Q行里,每行给出一个变种类型。
当M或N为0时,表示全部测试结束,不要对该数据做任何处理。
【输出要求】
对每一组测试,在一行里输出被某个特定变种所感染的机器数量,并测试结果写入output.txt文件。
本实验训练的内容包括六个方面:
(1)面向对象程序设计方法,类模板的应用;
(2)采用合适的求解问题算法,如广度优先搜索、Dijkstra算法、并查集等;
(3)矩阵存储;
(4)文件的读写操作;
(5)程序测试计划、用例的设计和测试方法。
相关文章推荐
- 用CSocket基于UDP协议进行网络通信过程中OnReceive函数无法响应消息的一个原因
- C#基础-041 设计一个玩家类,一个敌人类, 玩家可以攻击敌人,敌人可以攻击玩家,攻击点合理设计,可以通过随机数产生,模拟战斗过程
- 模拟游戏过程的一个程序
- 协议栈 协议栈是什么?协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议.使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(H
- 一个Linux下的网络模拟工具 Core
- 27-网络编程-22-网络编程(模拟一个浏览器获取信息)
- VS2010/MFC编程入门之十一中(对话框:模拟对话及其弹出过程)学习时的一个注意点
- shell下用ping 测试一个网络是否通,只显示结果而不显示过程输出
- 探索 | 神经网络到底是如何思考的?MIT精英们做了这么一个实验室来搞清楚
- Network Emulator for Windows Toolkit一个模拟弱网络环境的软件
- Network Emulator for Windows Toolkit一个模拟弱网络环境的软件
- 加入域的过程中,跳出一个找不到网络路径......
- 模拟AP与可以访问互联网的网络连接,虚拟出一个“无线路由器”
- 一个http请求的详细过程---理解计算机网络
- 2016-08-20-java-多线程的一个题目:用线程模拟竞拍过程
- 用Linux操作系统中流量控制器(TC)来模拟Linux机器网络之间情况
- 黑马程序员--图形界面中的鼠标,键盘两个事件,做一个磁盘的文件列表,菜单,子菜单,模拟记事本。网络编程,TCP的通信协议的特点
- 把一个网络文件写到当前机器上
- 用两个队列模拟实现一个栈的过程
- 机器深度学习笔记(1)——神经网络从一张图片中识别狗的过程