僵尸传染问题demo(BFS)

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
typedef struct node{
    int x;
    int y;
    int step;
}node;
int map[SIZE][SIZE]={{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1}};
node queue[30];
int head,tail;//队列头和队列尾
int step;
int x[4]={-1,0,+1,0};//x坐标的变化
int y[4]={0,+1,0,-1};//y坐标的变化
/* 函数名:enqueue
*  功能:入队
*  入口参数:要入队的节点
*  返回值:暂无
*/
void enqueue(node E){//用tail(对尾)进行插入操作
    queue[tail++] = E;//先入队,然后tail加一
}
/* 函数名:dequeue
*  功能:出队
*  入口参数:要出队的节点
*  返回值:出队的元素
*/
node dequeue(){//用head(队头)进行删除操作
    return queue[head++];//先出队,然后head加一
}

int main(){
    //源点入队列
    node SourcePoint ={4,4,2};
    enqueue(SourcePoint);
    step = 0;
    int count=3;
    map[4][4] = 2;//把传染源置为2
    node CurPoint ={};//当前点
    node NewPoint ={};//新的点
    while(head<tail){

        CurPoint = dequeue();//当前点出队列
        for(int i=0;i<4;i++){
            NewPoint.x = CurPoint.x + x[i];
            NewPoint.y = CurPoint.y + y[i];
            NewPoint.step = CurPoint.step+1;

            if((NewPoint.x<SIZE&&NewPoint.y<SIZE)&&(map[NewPoint.x][NewPoint.y]==1))
            {
                //CurPoint.x = NewPoint.x;
                //CurPoint.y = NewPoint.y;
                //map[CurPoint.x][CurPoint.y]=count;
    //             enqueue(CurPoint);

                  map[NewPoint.x][NewPoint.y] = NewPoint.step;
                  enqueue(NewPoint);

            }
        }
    }
    for(int i=0;i<SIZE;i++){
        for(int j=0;j<SIZE;j++)
        {
            printf("%d ",map[i][j]);
        }
        printf("\n");
    }
 //     { printf("%d",map[i]);
    //printf("\n");}
    system("pause");
}
时间: 2024-10-08 08:57:09

僵尸传染问题demo(BFS)的相关文章

僵尸传染bfs

#include<stdio.h> int map[4][4]={0,0,0,1,       0,0,1,1,       0,0,1,0,       0,1,0,0}; int mx[4]={0,0,1,-1}; int my[4]={1,-1,0,0}; typedef struct node {  int x;  int y;}node; node dui[1000]; int tou=0; int wei=1; void change() { int nx; int ny; dui

zoombies

//最短路径问题 //求一个迷宫的入口和出口间的最短路径的长度 //约束条件:迷宫中0的点可以走,1的点是障碍,不能走 //每次移动只能上.下.左.右移动1个位置,路径不能产生交叉 //僵尸传染: //用二维数组表示一个地图,地图上为1的点代表有人,为0的点代表空地 //开始时,只有一个人被病毒感染,变成了僵尸 //变成僵尸的人可以传染其他人,每一秒可以上.下.左.右四个方向距离为1的人传染 //求最终有多少人被感染,使用多长时间 // 1 1 1 1 1 1 1 1 1 1 // 1 1 1

题解——逃离僵尸岛(BFS+最短路+虚拟节点)

题解--逃离僵尸岛(BFS+最短路+虚拟节点) 一道很巧妙的最短路问题,细节也要注意 题面 Description 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入就会被感染TAT...所以不能进入.由其中任意城市经过不超过S条道路就可以到达的别的城市,就是危险城市.换句话说只要某个没有被占城市到某个被占城市不超过s距离,就是危险. 小a住在1号城市,国际

【NOI2009】植物大战僵尸

P1589 - [NOI2009]植物大战僵尸 Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而 Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies 对Plants发起进攻. 现在,我们将要考

洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]

题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入就会被感染TAT...所以不能进入.由其中任意城市经过不超过S条道路就可以到达的别的城市,就是危险城市.换句话说只要某个没有被占城市到某个被占城市不超过s距离,就是危险. 小a住在1号城市,国际空港在N号城市,这两座城市没有被侵略.小a走每一段道路(从一个城市直接到达另外一个城市)得花一整个白天,所

洛谷 P2805 BZOJ 1565 植物大战僵尸

题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来防守Zombies的进攻,或者相反地由玩家通过控制Zombies对Plants发起进攻. 现在,我们将要考虑的问题是游戏中Zombies对Plants的进攻,请注意,本题中

COGS410. [NOI2009] 植物大战僵尸

410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

图论(网络流):COGS 410. [NOI2009] 植物大战僵尸

410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻.该款游戏包含多种不同的挑战系列,比如Protect Your Brain.Bowling等等.其中最为经典的,莫过于玩家通过控制Plants来