• 数据结构上机思考


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

    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();
    }
  • 相关阅读:
    每个程序员都应该了解的内存知识
    关于CPU Cache -- 程序猿需要知道的那些事
    【转载】十分钟搞清字符集和字符编码
    初学 Java Web 开发,请远离各种框架,从 Servlet 开发
    XML
    接口比对象更加抽象
    【转载】Dom4j的使用(全而好的文章)
    BZOJ4870:[SHOI2017]组合数问题(组合数学,矩阵乘法)
    BZOJ1089:[SCOI2003]严格n元树(DP,高精度)
    BZOJ1259:[CQOI2007]矩形rect(DFS)
  • 原文地址:https://www.cnblogs.com/larvie/p/9948203.html
Copyright © 2020-2023  润新知