zoukankan      html  css  js  c++  java
  • 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("
    ");
        }
     //     { printf("%d",map[i]);
        //printf("
    ");}
        system("pause");
    }
    大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
  • 相关阅读:
    XCode Playground Overview
    Swift开发学习(二):Playground
    swift网址
    swift关于is和as的解释
    Swift之 ? 和 !
    Swift 学习之二十一:?和 !(详解)
    Swift学习三
    Makefile project
    20171110面试笔记 服务器端程序员+C/C++开发
    关键字
  • 原文地址:https://www.cnblogs.com/linux0537/p/6098096.html
Copyright © 2011-2022 走看看