• network of emergency contacts---BFS


    本题目的主要难点在如何寻找最后一层的数,利用book标记数组可以很好的解决问题。book=0的时候说明没被连接过,若要连接时,将book等于上一层book+1.

    需要注意的是,对于图的问题建立邻接矩阵是非常省时间的方法。类似这个道题,我没有用邻接矩阵,因此每次都要进入150的for循环。但是如果用矩阵,最多则是每次100的循环。这样对于n*n*n.....来说则会剩下很多时间。

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct{
        int a[300];
        int rear;
        int head;
    }queue;
    queue q;
    int A[150],B[150];
    int book[300];
    int test(int data[300],int startNum);
    void build(int data[300]){
        for(int i=0;i<300;i++)
            data[i]=rand()%100+1;
    }
    void main(){
        //freopen("intput.txt","r",stdin);
        int data[300];
        for(int l=0;l<10;l++){
            build(data);
            printf("%d
    ",test(data,data[0]));
        }
    }
    int test(int data[300],int startNum){
        for(int i=0;i<300;i++)
            book[i]=0;
        for(int i=0,j=0;i<299;j++){          //将数据分为两个数组中A表示边的出发点,B表示边的终点
            A[j]=data[i];
            B[j]=data[i+1];
            i=i+2;
        }
        q.rear=0;
        q.head=0;
        q.a[q.rear++]=startNum;
        book[startNum]=1;
        while(q.head<q.rear){
            int temp=q.a[q.head++];
            for(int i=0;i<150;i++){
                if(A[i]==temp&&book[B[i]]==0){
                    q.a[q.rear++]=B[i];
                    book[B[i]]=book[A[i]]+1;     //标记层数
                }
            }
        }
        int c=0;
        int max=0;
        for(int i=0;i<=299;i++){            //寻找最大层数
            if(c<book[i]){
                c=book[i];
            }
        }
        for(int i=299;i>=0;i--){            //寻找最大层数总最大值
            if(book[i]==c){
                max=i;
                break;
            }
        }
        return max;
    }
  • 相关阅读:
    puppeteer 离线安装chromium
    如何在Taro项目中使用Iconfont(阿里图标)
    POI3.8内存中限制行数为100问题记录
    centos下puppeteer调用chromium报错,缺少包
    VS Code 简单配置运行Java
    使用VSCode 断点调试 js项目,html页面
    Java--Excel--poi 边框、单元格换行、 背景色、合并单元格相关
    浅析Spring Aware
    Spring MVC 注解
    异常处理
  • 原文地址:https://www.cnblogs.com/lvcoding/p/6600355.html
Copyright © 2020-2023  润新知