1.本周学习总结
1.思维导图
2.谈谈你对图结构的认识及学习体会。
图结构类似于数,只不过各个节点在空间上相关联。在算法上思路非常多样,虽然可以在逻辑上明确,想要用代码去实现挺难的。
2.PTA实验作业(6分)
2.1.题目1:7-3 六度空间
2.1.1设计思路
创建队列q,t记录节点所在层数,number记录与i距离不超过6的节点个数
i先进栈
置visited[i]=1
while队列不为空
令temp=出队节点
遍历temp所连接的节点
当该节点没有遍历过
把该节点入队列
number++
如果遍历到的节点在第六层,返回所得的number值
2.1.2代码截图
2.1.3本题PTA提交列表说明。
- 出现段错误,数据不够大。
- 混用了BFS和DFS,导致部分正确。
2.2 题目2:7-1 图着色问题
2.2.1设计思路
int map[maxn][maxn],judge[maxn][maxn];
int color[maxn],tong[maxn];
int n,m,k 存放顶点数、边数、以及颜色数
int main()
{
输入数据
init();
for(int i = 0; i < m; i ++)
{
输入长宽,得到矩阵
scanf("%d %d",&x,&y);
map[x][y] = map[y][x] = 1;
}
for(int i = 0; i < maxn; i ++)
{
if(tong[i])
flag++;
else
返回
}
int 计数器 = 0;
如恰好等于染色数目
否
else if(!m)
是
else
{
for(int i = 1; i <= n; i ++)
{
for(int j = i + 1; j <= n; j ++)
{
if(map[i][j]!=maxn&&color[i]!=color[j])
计数器 ++;
else if(map[i][j]==maxn)
到达边界,重新开始循环
else if(map[i][j]!=maxn&&color[i]==color[j])
{
返回
}
if(index == -1) 返回
if(index == m)是
else否
2.2.2代码截图
2.2.3本题PTA提交列表说明.
2.3 题目3 7-4 公路村村通
2.3.1设计思路
void 普里姆算法
int cnt=1, Totalcost=0;
for(int i=1; i<=N; i++)
parent[i]=s; 记录父节点 路径
dist[i]=C[s][i];
parent[s]=-1;
dist[s]=0;
int v;
while(1){
v=findMin();
if(v==-1)break;
Totalcost+=dist[v];
cnt++;
收录后dist的值要变为0,表明该结点v已被收录
if 如果所有结点都收录完毕,则输出总费用
否则,则说明有些该图里面有回路
scanf("%d%d", &N, &M);
初始化各边
for(int i=1; i<=M; i++){
scanF三个正整数
C[a][b]=C[b][a]=c;
2.3.2代码截图
2.3.3本题PTA提交列表说明.
3、上机考试错题及处理办法
3.1.截图错题代码
3.2 错的原因及处理方法
- 目前还没有找到原因