zoukankan      html  css  js  c++  java
  • DS博客作业06--图

    1.本周学习总结(0--2分)

    1.思维导图

    2.谈谈你对图结构的认识及学习体会。
    学习了图,我感觉图比树更上了一个层次,元素之间的关系也更复杂了,并且理论知识也比较多,有些跟不上老师的进度,这节上完还来不及消化,又开始了下一节,在预习时候会做的题记得的概念过了下一节就变得模糊了,而且对AOE网和关键路径不太理解,临近期末要抓紧复习。

    2.PTA实验作业(6分)

    2.1.题目1:7-4 公路村村通

    2.1.1设计思路

        const int maxn=1001;                              //定义静态变量为数组大小
        int dist[maxn], C[maxn][maxn], parent[maxn];      //定义dist数组记录成本,C数组作为邻接矩阵,parent数组记录路径
        int findMin(){
        //找出最小边,并返回最小边对应的编号
        }
        void Prim(int s){
        //记录父节点 (路径)
        //记录权值
        while(1)
        {
        // 调用findMin()求得最短路径
        //计算总的路径长度
        //收录后dist的值要变为0,表明该结点v已被收录
        }
        //如果所有结点都收录完毕,则输出总费用
        //否则,则说明有些该图里面有回路 ,无法生成树
        int main(){
        for(int i=1; i<=N; i++)
        //初始化各边
        for(int i=1; i<=M; i++)
        //建立邻接矩阵
        Prim(1);                //调用Prim函数得出最小生成树,及其权值;
        }
    

    2.1.2代码截图



    2.1.3本题PTA提交列表说明

    Q1:一开始在编译器上可以通过,提交就编译错误,以为是编译器的问题;
    A1:仔细看了代码之后发现打头文件时候多了个点
    Q2:改了之后还是有两个测试点不过,最大N和M,不连通;
    A2:后边问了同学之后改进了对图是否连通的判断条件后就好了

    2.2.题目2:7-7 旅游规划

    2.2.1设计思路

        int node [505][505];         //定义数组node记录城市;
        int dis[505][505];                     //定义dis记录城市之间的路径长度
        int main()
        {
        int n,m,s,d,i,j,k,x,y,q,w;            //定义n,m,s,d记录城市个数,路径数,出发地和目的地编号
    cin>>n>>m>>s>>d;                  // 输入城市个数,路径数,出发地和目的地编号
        for(i=0;i<n;i++)
        {
      for(j=0;j<n;j++)
     {                                  //给邻接矩阵初始化
      if(i==j)
        for(i=0;i<m;i++)
         //给出每条高速公路的信息
    node[x][y] = node[y][x] = q;                //路径长度
    dis[x][y] = dis[y][x] = w;                 //路径的花费
        if(node[i][j]>node[i][k]+node[k][j]||(node[i][j]==node[i][k]+node[k][j]&&dis[i][j]>dis[i][k]+dis[k][j]))
    	{
             //找出花费最低且路径最短的一条路径
                }
          //输出该路径的路径长度和花费
    

    2.2.2代码截图


    2.2.3本题PTA提交列表说明

    2.3.题目3:7-1 图着色问题

    2.3.1设计思路

        int color[501]={0};                    //定义数组color记录颜色;
        int g[501][501]={0};                   //定义数组g来建立图的邻接矩阵
        int search(int v);                     //search函数用来判断两相邻
        int v,E,K,N,a,b,i,j;                    //v,E,K分别记录顶点数,边数,颜色数;a,b记录每条边的两个顶点
        for(i=0;i<E;i++)
        //给邻接矩阵初始化
        cin>>N;                      //输入待检查的颜色分配
        set<int>col;               //建立一个存放int的set容器。
        for(int j=1;j<=v;j++)
        //输入每个顶点的颜色
        //向集合中插入颜色;
        if(col.size()==K&&search(v)==true)         //判断该集合中的颜色数是否等于规定颜色数,判断两相邻顶点颜色是否相同
        //满足条件则输出yes
        //否则输出No;
        //清空数组
        int search(int v) 
         {
        //判断相邻结点颜色是否重复,重复返回false,否则返回true;
        }
    

    2.3.2代码截图


    2.3.3本题PTA提交列表说明

    Q1:开始是用邻接表的做法,但就有一个测试点过不了,老是并不知道错哪
    A2:去论坛上看了网友的做法,感觉这个更加易懂并且代码简便,就用了这个做法

    3、上机考试错题及处理办法(-2--2分)

    .1.截图错题代码

    6-3 jmu-ds-拓扑排序


    3.2 错的原因及处理方法

    没给visited[i]和G->adjlist[i].count=0初始化,每次判断都会跳到error!

  • 相关阅读:
    conda环境配置以及pyinstaller报错配置
    软件测试的艺术--读书笔记
    flex布局相关
    移动端特殊样式
    css3中的2D转换
    logo seo优化
    html5 简单的新特性
    css中溢出文字省略号方式
    css用户界面样式
    精灵图与字体图标相关
  • 原文地址:https://www.cnblogs.com/ljwclot/p/10961917.html
Copyright © 2011-2022 走看看