《数据结构》课程设计报告书(地址:http://apenny.taobao.com/)
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)程序测试计划、用例的设计和测试方法。