这周和3位朋友一起完成了系运动会的视频,感受很多,也学到很多。

周次

学习时间

新编代码行数

博客量

学到知识点

14

20

100

1

Html页面设计;虚拟机;(C语言)最小生成树与最短路径

Html案例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>head</title>

</head>

<style type="text/css">

div{

width: 600px; /*不设定高度使其高度自适应*/

border:1px solid #CCC;

margin:0px auto;

}

#a{

height:50px;

border:1px solid #999;

line-height: 2em;

margin:0px;

}

#b{

height:350px;

border:1px solid #0CC;

line-height: 2em;

margin:0px;

}

#c{

height:50px;

border:1px solid #096;

line-height: 2em;

margin:0px;

}

</style>

<body>

<div>

<div id="a">head</div>

<div id="b">middle</div>

<div id="c">bottom</div>

</div>

</body>

</html>

C语言:

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX_VEX_NUM 100                         //最大顶点数

#define MAX_EDGE_NUM 200

typedef int WeightType;              //边的权值类型

typedef char *VexType;          //顶点数据类型

typedef struct ENode{

int vex1,vex2;

WeightType w;

}ENode;

typedef struct{

int vexnum,edgenum;

VexType vexlist[MAX_VEX_NUM];

ENode edgelist[ MAX_EDGE_NUM];

}ELGraph;

#define MinEdge  32767

/********************************************************/

//Prim算法的最小生成树

ENode * Prim_MST(ELGraph *g){

int edgeflags[MAX_EDGE_NUM],vexflags[MAX_VEX_NUM];

int i,j,k1,k2;

for(i=0;i<MAX_EDGE_NUM;i++)

edgeflags[i]=-1;

for(i=0;i<MAX_VEX_NUM;i++)

vexflags[i]=-1;

vexflags[0]=0;//先交第一个顶点

int nvex=1;

int eposi=-1,vposi=-1;

WeightType tmp;

for(i=1;i<MAX_VEX_NUM;i++){

tmp=MinEdge;

for(j=0;j<MAX_EDGE_NUM;j++){//循环获取i顶点的每一条边

if(edgeflags[j]!=-1) continue; //此边已加入集合,则取下一条边

for(k1=0;k1<i;k1++){

if(g->edgelist[j].vex1==vexflags[k1]){ //此边的顶点已在集合中否?

//  vposi=k1;

break;//是,退出

}

} //k1==i 表示此vex1顶点在TV集合中

for(k2=0;k2<i;k2++){

if(g->edgelist[j].vex2==vexflags[k2]){//此边的另一个顶点已在集合中否?

// vposi=k2;

break;//是 ,退出

}

}

if(k1==i && k2==i)  //此边的两个顶点都在集合中,则形成回路,不能使用此边

continue;

if(k1!=i && k2!=i)   //此边的两个顶点都不在集合中,不能使用此边

continue;

//此边只有一个顶点在集合中,

if(g->edgelist[j].w<tmp){//此边的权是否最小

tmp=g->edgelist[j].w;//是,暂时保存此权

eposi=j; //暂时保存此边

//暂时保存此边不在集合中的一个顶点

if(k1==i)

vposi=g->edgelist[j].vex1;

if(k2==i)

vposi=g->edgelist[j].vex2;

}

}

vexflags[i]=vposi;//把此边不在集合中的顶点加到集合中

edgeflags[eposi]=1;//标记此边已使用,即此边加到集合中。

}

ENode *pen=(ENode*)malloc(sizeof(ENode)*(g->vexnum-1));

k1=0;

int n=g->vexnum-1;

for(i=0;i<MAX_EDGE_NUM ;i++){

if(edgeflags[i]==1)

{ pen[k1++]=g->edgelist[i];

if(k1==n)

break;

}

}

return pen;

}

/********************************************************/

//Kruskal算法的最小生成树

//根据边的权值从小到大排序

void Sort(ENode *pen,int n){ //pen为边集,n为边的个数

int i,j;

WeightType tmp=pen[0].w;

int posi=0;

ENode etmp;

for(i=0;i<n-1;i++){

posi=i;tmp=pen[i].w;

for(j=i+1;j<n;j++){

if(pen[j].w<tmp){

tmp=pen[j].w;posi=j;

}

}

etmp=pen[i]; pen[i]=pen[posi];pen[posi]=etmp;

}

}

ENode* Kruskal_MST(ELGraph *gl)

{

int *vset=(int *)malloc(sizeof(int)*gl->vexnum);

//存放最小生成树的n-1条边

ENode *pen=(ENode *)malloc(sizeof(ENode) * (gl->vexnum-1));

int i;

for(i=0;i<gl->vexnum;i++) vset[i]=i; //每个顶点单独一个连通分量

Sort(gl->edgelist,gl->edgenum); //根据边的权值从小到大排序

int s=0,j=0;

int c1,c2;

while(s < gl->vexnum-1  && j< gl->edgenum){

c1=gl->edgelist[j].vex1;c2= gl->edgelist[j].vex2;//取边的两个顶点

if(vset[c1] !=vset[c2])//判断两个顶点的连通分量相同否?

{    //若两个顶点的连通分量不相同,则将该边加入到pen边集中

pen[s].vex1=c1;pen[s].vex2=c2;pen[s].w=gl->edgelist[j].w;

s++;

for(i=0;i<gl->vexnum;i++)

if(vset[i]==vset[c2])

vset[i]=vset[c1];//将两个不同顶点的连通分量合并成一个连通分量

}

j++;//取下一条边

}

free(vset);

//free(pen);

return pen;

}

/********************************************************/

//输出与顶点v相连的顶点及其边的权值,gl为原图,pen为最小生成树

void  PrintV(ELGraph *gl,  ENode *pen, VexType v)

{

int i,posi=-1;

for(i=0;i<gl->vexnum;i++){

if(strcmp(v,gl->vexlist[i])==0)

{ posi=i;

break;

}

}

if(posi==-1){

printf("无此顶点%s数据\n",v);

return;

}

printf("顶点%s",v);

for(i=0;i<gl->vexnum-1;i++){

if(pen[i].vex1==posi){

printf("与%s顶点相连的权值为%d ",gl->vexlist[pen[i].vex2],pen[i].w);

}

if(pen[i].vex2==posi){

printf("与%s顶点相连的权值为%d ",gl->vexlist[pen[i].vex1],pen[i].w);

}

}

printf("\n");

}

int main(int argc, char* argv[])

{

printf("303 柳晓雅 最小生成树\n");

ELGraph g;

ENode *pe=g.edgelist;

g.vexnum=7;

g.edgenum=10;

g.vexlist[0]="v0"; g.vexlist[1]="v1";g.vexlist[2]="v2";

g.vexlist[3]="v3";g.vexlist[4]="v4";g.vexlist[5]="v5";

g.vexlist[6]="v6";

pe[0].vex1=0;  pe[0].vex2=5;  pe[0].w=8;

pe[1].vex1=0;  pe[1].vex2=6;  pe[1].w=16;

pe[2].vex1=1;  pe[2].vex2=2;  pe[2].w=6;

pe[3].vex1=1;  pe[3].vex2=3;  pe[3].w=5;

pe[4].vex1=2;  pe[4].vex2=3;  pe[4].w=9;

pe[5].vex1=2;  pe[5].vex2=5;  pe[5].w=13;

pe[6].vex1=3;  pe[6].vex2=4;  pe[6].w=16;

pe[7].vex1=3;  pe[7].vex2=6;  pe[7].w=12;

pe[8].vex1=4;  pe[8].vex2=5;  pe[8].w=15;

pe[9].vex1=4;  pe[9].vex2=6;  pe[9].w=7;

/* g.edgelist[0].vex1=0;g.edgelist[0].vex2=1;g.edgelist[0].w=10;

g.edgelist[1].vex1=0;g.edgelist[1].vex2=4;g.edgelist[1].w=9;

g.edgelist[2].vex1=0;g.edgelist[2].vex2=5;g.edgelist[2].w=15;

g.edgelist[3].vex1=1;g.edgelist[3].vex2=2;g.edgelist[3].w=1;

g.edgelist[4].vex1=1;g.edgelist[4].vex2=3;g.edgelist[4].w=6;

g.edgelist[5].vex1=1;g.edgelist[5].vex2=5;g.edgelist[5].w=11;

g.edgelist[6].vex1=2;g.edgelist[6].vex2=3;g.edgelist[6].w=6;

g.edgelist[7].vex1=3;g.edgelist[7].vex2=4;g.edgelist[7].w=8;

g.edgelist[8].vex1=3;g.edgelist[8].vex2=5;g.edgelist[8].w=4;

g.edgelist[9].vex1=4;g.edgelist[9].vex2=5;g.edgelist[9].w=13;

*/

ENode *pen=Prim_MST(&g);

ENode *pen2= Kruskal_MST(&g);

char ss[100];

while(1){

printf("请输入顶点数据,输入0退出:");

scanf("%s",ss);

if(ss[0]=='0') break;

printf("Prim 算法生成树:  ");

PrintV(&g, pen, ss);

printf("Kruskal算法生成树:");

PrintV(&g, pen2, ss);

printf("\n");

}

free(pen);

free(pen2);

return 0;

}

周总结<7>的更多相关文章

  1. 2015 Autodesk 开发者日( DevDays)和 助力开发周火热报名中

    Autodesk 软件(中国)有限公司 ADN 市场部真诚地邀请您参加我们一年一度的 "Autodesk 开发者日"(简称 DevDays),以及第一次随同开发者日举办的" ...

  2. 记一周cdqz训练

    #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.com/w ...

  3. java第三周学习

    这一周学习的是java数组面向对象 数组中存放的数据的类型:既可以是基本数据类型也可以是引用数据类型. 数组的定义方式: 1 数据类型[] 数组名; 2 数据类型 数组名[]; 数组的初始化: 1.静 ...

  4. java第二周周学习总结

    java运算符和循环 java运算符 一.for 语句 for 语句的基本结构如下所示:for(初始化表达式;判断表达式;递增(递减)表达式){    执行语句;   //一段代码} 初始化表达式:初 ...

  5. my97DatePicker选择年、季度、月、周、日

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 下面总结下使用该日历控件选择年.季度.月.周.日的方法. .选择年 <input id="d1212" ...

  6. 第16周界面设计PSP总结

    计划:需1周完整完成 需求分析:作为一个观众,我希望能够了解每一场的比分结果,随时跟进比赛进程 生成设计文档:暂无 设计复审:暂无与组员进行设计复审 代码规范:Visual Studio2010 具体 ...

  7. 三周,用长轮询实现Chat并迁移到Azure测试

    公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...

  8. 根据起止日期构建指定查询条件:第N周(yyyy-MM-dd/yyyy-MM-dd)

    项目中有个查询模块中用到查询条件: 年和周. 以往我直接指定是第几周,后来测试反映如果直接选择周的话并不知道所选周代表的年月日,而无法最快查询数据,后更改查询条件如下: 指定一个起始年月,根据起始年月 ...

  9. 第0/24周 SQL Server 性能调优培训引言

    大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录. 作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于 ...

  10. 从零开始学Python第一周:Python基础(上)

    Python语法基础(上) 一,Python的变量 (1)创建变量 变量的含义:存储信息的地方 创建变量并赋值 x = 1 print x x = 123 #再次赋值 print x (2)使用变量 ...

随机推荐

  1. input的默认样式去除

    outline:none;-----可去除input=text,的输入框输入时的亮边.

  2. laravel5.5源码笔记(二、服务提供者provider)

    laravel里所谓的provider服务提供者,其实是对某一类功能进行整合,与做一些使用前的初始化引导工作.laravel里的服务提供者也分为,系统核心服务提供者.与一般系统服务提供者.例如上一篇博 ...

  3. [FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解

    1.有关优先级 1.1 Configuration --> FreeRTOS MAX_PRIORITIES 设置任务优先级的数量:配置应用程序有效的优先级数目.任何数量的任务都可以共享一个优先级 ...

  4. C#串口通信及数据表格存储

    1.开发环境 系统:win10 开发工具:Visual Studio 2017 2.界面设计 串口通信的界面大致如此,在此基础上添加项目所需的调试指令与数据存储功能,界面排布方面可参考其他教程. 3. ...

  5. MAC下绕开百度网盘限速下载的方法,三步操作永久生效

    第一步:下载所需工具:(①②步我放在同一个文件夹,可一起下载,链接失效请留言) 工具地址:链接: https://pan.baidu.com/s/1raicYzM 密码: ve3n ①下载Aria2G ...

  6. SQL宽字节注入

    0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...

  7. 20155202 20155222 信息安全技术概论实验一 PGP的使用

    20155202 信息安全技术概论实验一 PGP的使用 实验原理 一.PGP简介 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分.邮件的安全问题也就突出了,大家都知道在互联网上传输的数据 ...

  8. 20155313 实验二《Java面向对象程序设计》实验报告

    20155313 实验二<Java面向对象程序设计>实验报告 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. ...

  9. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛

    A There is a tree with nn nodes, at which attach a binary 64*6464∗64 matrix M_i (1 \le i \le n)M ​i ...

  10. 20155338 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155338 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 1.用JDK编译.运行简单的java程序 步骤一(新建文件夹): 打开windows下的 ...