zoukankan      html  css  js  c++  java
  • 数据结构上机思考

    抱歉,迟到了,第五次才开始写

    5

    随机种子的应用

    srand(time(0));

    rand()%a+b;.....随机数属于[b,a];

    https://blog.csdn.net/cmm0401/article/details/54599083

    其中,随机生成一张图的过程中实际上需要随机生成的是:

    图的总节点数

    这个点与另外哪些点相连接(此点的度)

    这条边的权值

    #define MAX_DISTANCE 100000

    bool** G;//图,G[i][j]=true表示顶点i和j相邻
    int N;//图的顶点个数
    int **D;//D[i][j]表示点i和点j的距离
    void floyd(){
        //initialize
        for (int i=0;i<N;i++)
        {
            for (int j=0;j<N;j++)
            {
                if (G[i][j])//i和j连通,则他们的距离是1
                {
                    D[i][j]=rand()%50+10;
                    D[j][i]=D[i][j];
                }else{//否则不可达
                    D[i][j]=MAX_DISTANCE;
                }
            }
        }
        //floyd
        for (int k=0;k<N;k++)
        {
            for (int i=0;i<N;i++)
            {
                for (int j=0;j<N;j++)
                {
                    if (D[i][j]>D[i][k]+D[k][j])
                    {
                        D[i][j]=D[i][k]+D[k][j];
                    }
                }
            }
        }
    }
    int main(){
        srand((unsigned int)time(NULL));
        N=rand()%10+5;
        G=new bool *[N];
        D=new int *[N];
        for (int i=0;i<N;i++)
        {
            G[i]=new bool[N];
            D[i]=new int[N];
            for (int j=0;j<N;j++)
            {
                G[i][j]=0;
                D[i][j]=0;
            }
        }
    for (int i=0;i<N;i++)
        {
            int n=rand()%N;//顶点i最多和n个顶点连通
            for (int k=0;k<n;k++)
            {
                int j=rand()%N;
                G[i][j]=true;
                G[j][i]=true;
            }
        }
        floyd();
    }
  • 相关阅读:
    算法第四章上机实践报告
    算法第三章作业
    算法第三章上机实践报告
    算法第二章总结
    关于stl::sort--算法第二章作业
    算法第二章上机实践报告
    算法第一章作业
    1
    2020-2021-1 20209302毕慧敏《Linux内核原理与分析》第十二周作业
    2020-2021-1 20209302毕慧敏《Linux内核原理与分析》第十一周作业
  • 原文地址:https://www.cnblogs.com/larvie/p/9948203.html
Copyright © 2011-2022 走看看