1.本周学习总结
1.思维导图
2.学习体会
在本章中学习了图的相关知识,图形数据结构主要研究形状和图形数据元素之间的关系,与一般数据结构不同,它必须要反映数据所对应元素之间的几何关系和拓扑关系。并且图通常是指由若干个图形数据元素按一定关系所组成的有序集,一般称为表,如果这些数据元素之间具有邻接关系,成为线性表,否则称为非线性表,线性表是由若干个节点组成的有序组合。图既方便又有很多应用,比如运用优先遍历和深度优先遍历,做出一系列应用,以及邻接表和邻接矩阵的选择,还有公路通车问题,旅游规划问题等等。
2.PTA实验作业
2.1题目一:图着色问题
图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?
但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。
2.1.1设计思路(伪代码)
void CreateMGraph(MGraph &g, int n, int e)//建图
定义整型a1, a2和i,j;
g.n = n;
g.e = e;
for (i从1到g.n++)
{
for (从1到g.n++)
{
g.edges[i][j] =等于 0;
}
}
for (i 从0到g.e)
{
输出a1,a2;
并使g.edges[a1][a2] = 1;
g.edges[a2][a1] = 1;
}
}
void JudgeColor(MGraph g, int n, int colors)//判断着色是否正确
定义整型color[MAXV];
memset(color, -1, sizeof(color));
定义整型i, j, flag = 1, count = 0;
for (i从1到n++)
{
输出color[i];
for (j从1到n++) {
if (color[i] 等于 color[j])
{
则使flag = 0;
结束循环;
}
}
if (flag 等于1)count++;
flag = 1;
}
if (count 不等于 colors) {
输出no并返回;
}
for (i从1到n) {
for (从i+1到n) {
if (g.edges[i][j] == 1 && color[i] == color[j] && i != j) {
输出no并返回; }
}
}
输出yes并返回;
}
2.1.2代码截图
2.1.3提交列表及说明
A1:第一个编译错误?
Q1:我傻的不行,忘记改编译器,一直都是c
A2:部分正确是为啥?
Q2:我把循环条件改错了,应该是小于等于,我打成了小于。
2.2题目二:修建道路
N个村庄,从1到N编号,现在请您兴建一些路使得任何两个村庄彼此连通。我们称村庄A和B是连通的,当且仅当在A和B之间存在一条路,或者存在一个存在C,使得A和C之间有一条路,并且C和B是连通的。
已知在一些村庄之间已经有了一些路,您的工作是再兴建一些路,使得所有的村庄都是连通的,并且兴建的路的长度是最小的。
2.2.1设计思路(伪代码)
int main()
{
输入n;
定义整型a,b,i,j;
for(i从1到e)
{
输入a.b并使G[a][b]=G[b][a]=1;
}
定义整型k;
for(i从1到n)
{
double m=n;
k=SixBFS(i);
printf("%d: %.2f%%\n",i,k/m*100);
}
返回0;
}
int SixBFS(int v)
{
定义整型count=1,level=0;
last=v,tail;
i;
visited[10001]={0};
并使 visited[v]=1;
queue<int> qu;
qu.push(v);
while(队不为空)
{
v=qu.front();
出队;
for(i从1到n)
{
if(G[v][i]等于1&&!visited[i])
{
count递增;
visited[i]=1;
qu.push(i);
tail=i;
}
}
if(last等于v)
{
level递增;
last=tail;
}
if(level==6)break;
}
返回 count;
}
2.2.2代码截图
2.2.3提交列表及说明
A1:编译错误?
Q1:就是普通的编译错误,忘记加分号了
A2:运行超时?
Q2:我的循环出了毛病,每次都是这里不太清楚。
2.3题目三:六度空间
2.3.1设计思路(伪代码)
2.3.2代码截图
2.3.3提交列表及说明
3.上机考试错题及处理办法
3.1.1截图错误代码
当时没写,无错误代码
3.1.2错误原因及处理办法
当时着急,没有时间,也没有好好理解,所以没写,后来做了一下,正确代码如下。
3.2.1截图错误代码
3.2.2错误原因及处理方法
这道题我得了4分,因为老师的提醒,我的结构等都是直接复制的当时第一题,然后我输出了一个提示,因为时间紧张,没法仔细想,只能稍稍理解题意,有个大概的思路就要结束考试了。
处理方法如下:
3.3.1截图错误代码
无错误截图,考试时没有打
3.3.2错误原因及截图
请看上面编程题,因为没有时间,pta也没熟悉,所以没打出来。