数据结构上机思考


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

5

随机种子的应用

srand(time(0));

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

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

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

图的总节点数

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

这条边的权值

#defineMAX_DISTANCE100000

bool**G;//图,G[i][j]=true表示顶点i和j相邻
intN;//图的顶点个数
int**D;//D[i][j]表示点i和点j的距离
voidfloyd(){
//initialize
for(inti=0;i<N;i++)
{
for(intj=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(intk=0;k<N;k++)
{
for(inti=0;i<N;i++)
{
for(intj=0;j<N;j++)
{
if(D[i][j]>D[i][k]+D[k][j])
{
D[i][j]=D[i][k]+D[k][j];
}
}
}
}
}
intmain(){
srand((unsignedint)time(NULL));
N=rand()%10+5;
G=newbool*[N];
D=newint*[N];
for(inti=0;i<N;i++)
{
G[i]=newbool[N];
D[i]=newint[N];
for(intj=0;j<N;j++)
{
G[i][j]=0;
D[i][j]=0;
}
}
for(inti=0;i<N;i++)
{
intn=rand()%N;//顶点i最多和n个顶点连通
for(intk=0;k<n;k++)
{
intj=rand()%N;
G[i][j]=true;
G[j][i]=true;
}
}
floyd();

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn