DS博客作业06--图
本周学习总结
1.1思维导图
1.2谈谈你对图结构的认识及学习体会。
1. 开始学图先接触的是图的遍历,又分为深度遍历和广度遍历,深度遍历是一个接一个遍历,而广度遍历的是一层遍历完后再遍历一层,与树的层次遍历有相同之处。
2.最小生成树中prim算法与kruskal:两者区别是prim算法中需要不断的去修改所找到的最小权值的操作,但是kruskal的执行时间与图的边数有关,所以适合稀疏图,而prim算法就比较适合稠密图。
3.Dijkstra算法:逐个遍历图的边,发现权值最小的边就修改最短边的路径。Floyd算法:递推产生一个矩阵序列A0,A1.......AK....AN-1,其中,A[i][j]表示i-->j的路径。
4.拓扑以及AOE网:即在有向图中找一个拓扑序列的过程即是拓扑排序;入度为0开始到结束出度为0的结束世界。
2.PTA实验作业
2.1.题目1:图着色问题
2.1.1设计思路
#include<iostream>
#include<vector>
#include<map>
定义vector<> G[50]定义了50个整型元素的向量
定义全局变量 数组color[505],v,e,k,flag;
int main()
{
定义 x,y; //
输入边,顶点,颜色;
for(i 1to e)
{
scanf(x,y);
G.push_back(x); //在G的最后一个向量后插入一个元素,其值为x
G.push_back(y); //在G的最后一个向量后插入一个元素,其值为y
}
scanf(t); //输入要比较的N行
while(行数依次比较)
{
map<int,int>mp;
for(i=1 to v)
{
输入颜色数组;
把mp[color[i]]置为1;
}
如果mp中的颜色个数不为输入的个数
{
直接输出NO;
}
else
{
flag=1;
调用函数solve();//函数的作用是逐个比较颜色是否匹配
if(flag) 输出Yes;
else //颜色不匹配输出NO
2.1.2代码截图
2.1.3本题PTA提交列表说明
- A:开始时按照自己的想法做了一下,在编译器上改了半天还是没得出正确答案,于是集上网找了一下,学习用vector做法,哎呀妈呀,代码真的少,于是毫不犹豫就用这种做法,不过还是找了同学的代码参考,对比了一下自己的开始的错误。
2.2 题目2:六度空间
2.2.1设计思路
#include<iostream>
#include<stdio.h>
#include<queue>
定义bool型 map[1001][1001]={false};
定义 全局变量n,m,count;
int main()
{
cin>>n>>m;
for(i=0 to m)
{
map[][]初始化置为1;
}
for(int i=1 to n)
{
count=1;//count计数
调用广度遍历图
全局变量计数即可计算所占比例
输出;
}
BFS函数
{
在广度遍历的基础上加上遍历每当计数层次的level==6时结束。
定义bool型 visited[10001]={false}
queue<int>q;//运用队列
int level,last=x,tail=0; //分别用来计数层次,记录当前层次的最后一个元素,指向下一层的最后一个元素。
while(队列不空的情况)
{
取队头;
如果没遍历过就遍历,顺便加上遍历标记;
}
if(level==6) break;
2.2.2代码截图
2.2.3提交列表及其说明
- A:这道题广度遍历来做,再熟悉使用了一下广度遍历的思想,但开始是没想到计算比例具体要怎么来算的,找了一下度娘,再加上之前自己的代码加上当遍历到level=6时结束,格式这块搞错了 一下,改过来就可以了。
2.3 题目3:公路村村通
2.3.1设计代码
#include<iostream>
using namespace std;
#define INF 65535
#defineMaxtexNum 1001
int main()
{
调用函数init();
调用函数prim();
}
init函数
{
cin>>边>>点;
初始化
while((e--)
{
cin>>V>>M;
map[V][M]=map[M][V]=weight;
}
prim函数、、最小生成树
{
for(i=1 to Nv)
{ cost[i] =map[1][i];
}
置访问标记;
for(i=1 to Nv)
{
调用findMin函数找最小;
if(找到了)
{
收到集合里;
更新找到的最小;
}
findMin()函数
{
遍历j=1;j<Nv)
{
if(cost[j]!=0&&cost[j]<mincost)
找到最小}
返回k;
}
2.3.2代码截图
2.3.3提交列表及其说明
- A:这道题主要是考最小生成树的两个算法,在学习了prim算法后思路其实比较好理解的,这道题是百度的,虽然懂得了prim算法的大致思路,但是在写代码时候还是无从下手。
3、上机考试错题及处理办法
- 题目
3.1.截图错题代码
3.2 错的原因及处理方法
错误的是在图的遍历中越界了没发现,应该是从0开始to n;我写的是<=n;查错时候一直没发现,下来对比代码才发现。处理,直接改遍历的边界,把=去掉就可以了。
代码
- 考试发蒙,最小路径都忘记了。。。。。。