• 大小: 1.1MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-29
  • 语言: C/C++
  • 标签: 熊猫烧香  

资源简介

C++实现熊猫烧香问题(包含试验报告+试验代码讲解)

资源截图

代码片段和文件信息

#include
#include
#include
using namespace std;
#define MAXNODE 100
#define MAXVER 100  //病毒类型种类的最大值

 
typedef struct VertexType //一台电脑的信息
{
int day;//第几天感染的
int dl;//防御级别
int rc;//行列号
int vt;// 病毒类型

}VertexType;

typedef struct MGraph //整个图的构造
{   
VertexType m[MAXNODE][MAXNODE];
int rowcolum num;//行列数,感染的数目
}MGraph;

void virspread(VertexType vint nowday);


MGraph mg ;//定义

void MGraphInit()//初始化
{
int ij;
for(i=0;i for(j=0;j {
mg.m[i][j].vt =0;
mg.m[i][j].dl=0;
mg.m[i][j].day=0;
    mg.num=0;
mg.m[i][j].r=i;
mg.m[i][j].c=j;
}
}

void MGraphCreat()//创建图,邻接矩阵
{
MGraphInit();
srand( (unsigned)time( NULL ) );
cout<<“请逐行输入“< int ij;

for(i=0;i {
//cout<<“输入第“< for(j=0;j {
int a;
//cin>>a;
a=(10-rand()%20);
if(a==0)
{
a=a+1;
}

if(a>0) 
{   
mg.m[i][j].vt=a;
}
else 
{
mg.m[i][j].dl=0-a;   

}//if
}//for
}
int k=(mg.row+mg.colum)/2;
int h=(mg.row+mg.colum)/3;
mg.m[k][k].vt=1;//确保有一台机器已经被感染
mg.m[h][h].dl=3;//确保有一台机器没有被感染
}//MGraphCreat


void vir()    //依次寻找病毒并调用函数virspread(mg.m[i][j]nowday);进行病毒的传播
{  
int virtype=1;
int ij;
int nowday=1;
  
while(mg.num<(mg.row*mg.colum))

mg.num=0;
while(virtype<=MAXVER)
{
for(i=0;i
   for(j=0;j  {
if(mg.m[i][j].vt==virtype)
{  
virspread(mg.m[i][j]nowday);
}
}
virtype++; 
}
for(i=0;i for(j=0;j if((mg.m[i][j].vt)>0) 
mg.num++;
   /***********显示每天的感染情况*********/
Sleep(3000);  //停顿3s
                system(“cls“); //清屏
cout<<“第“<  for(i=0;i  {
               for(j=0;j {
            if(mg.m[i][j].vt!=0)
          cout<             else
       cout<<(0-mg.m[i][j].dl)<<“☆“<<“  “;
}
            cout<  }
                  cout<   /***********显示每天的感染情况*********/
    nowday++;
virtype=1;
}

}

void virspread(VertexType vint _nowday)   //病毒传播函数
{
VertexType qv[4*MAXNODE];
int front = 0rear = 1;
qv[1] = v;
while(front<=rear)// ↑,←,↓,——>四个方向进行传播
{
v=qv[++front];
if(v.r-1>=0&&mg.m[v.r-1][v.c].vt==0&&mg.m[v.r-1][v.c].dl<=_nowday)
{
   
mg.m[v.r-1][v.c].vt=v.vt;
qv[++rear]=mg.m[v.r-1][v.c];
}
if(v.c-1>=0&&mg.m[v.r][v.c-1].vt==0&&mg.m[v.r][v.c-1].dl<=_nowday)
{
  
mg.m[v.r][v.c-1].vt=v.vt;
qv[++rear]=mg.m[v.r][v.c-1];
}
if(v.r+1 {
  
mg.m[v.r+1][v.c].vt=v.vt;
qv[++rear]=mg.m[v.r+1][v.c];
}
if(v.c+1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件     1221120  2012-05-26 21:04  熊猫烧香\0103975鄢志青.doc
     文件        4364  2012-05-18 17:32  熊猫烧香\熊猫烧香.cpp
     目录           0  2012-12-06 14:25  熊猫烧香\

评论

共有 条评论