zoukankan      html  css  js  c++  java
  • 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;查错时候一直没发现,下来对比代码才发现。处理,直接改遍历的边界,把=去掉就可以了。
    
    

    代码


    • 考试发蒙,最小路径都忘记了。。。。。。
  • 相关阅读:
    mysql 8安装
    MYSQL escape用法--转义
    为什么lombok不起作用
    zookeeper的作用
    限流的玩法汇总
    Golang程序调试工具介绍(gdb vs dlv)
    净化Git之rebase变基的使用
    深入linux下磁盘Disk,分区Partition,挂载Mount
    利用SSH(无密码)免登录来节省你的生命
    tcp_tw_reuse、tcp_tw_recycle注意事项
  • 原文地址:https://www.cnblogs.com/ttyppt/p/10962462.html
Copyright © 2011-2022 走看看