2023年的专业408算法题

2023-05-16

文章目录

  • 0 结果
  • 1 题目
  • 2 思路
  • 3 实现
  • 附录

0 结果

请添加图片描述

1 题目

对于一个有向图,如果一个顶点的出度大于入度,则这个顶点称为K顶点。有向图用邻接矩阵存储,数据结构定义如下:

typedef struct {
    int numVertices, numEdges;//顶点数、边数
    char VerticesList[MAXV];//顶点表
    int Edge[MAXV][MAXV];//邻接矩阵
}MGraph;

要求实现函数int printVertices(MGraph G),输出有向图中所有K顶点,并返回K顶点的总数。

要求:

(1)说明算法思想;
(2)用C/C++实现算法 。

2 思路

遍历有向图的所有顶点,并统计各顶点的入度(矩阵第i行元素个数)和出度(矩阵第i列的元素个数),输出出度大于入度的K顶点,使用count变量统计K顶点的总数。

3 实现

举例的图(摘自《王道》):
在这里插入图片描述

#include<iostream>
#include <vector>
const int MAXV = 6;//例c取值:6  例a取值:4

typedef struct {
    int numVertices, numEdges;//顶点数、边数
    char VerticesList[MAXV];//顶点表
    int Edge[MAXV][MAXV];//邻接矩阵
}MGraph;

int printVertices(MGraph G){
    int count = 0;//K顶点总数
    for (int i = 0; i < G.numVertices; ++i) {
        int in_degree = 0, out_degree = 0;
        for (int j = 0; j < G.numVertices; ++j) {
            if(G.Edge[i][j] > 0) out_degree++;
        }
        for (int j = 0; j < G.numVertices; ++j) {
            if(G.Edge[j][i] > 0) in_degree++;
        }
        if(out_degree > in_degree){
            count++;
            std::cout<<"K顶点为:"<<G.VerticesList[i]<<"\n";
        }
    }
    return count;
}


int main(){
    MGraph G;

    //例a:
//    for (int i = 0; i < 4; ++i) {
//        for (int j = 0; j < 4; ++j) {
//            G.Edge[i][j] = 0;
//        }
//    }
//    G.Edge[0][1] = 1;
//    G.Edge[0][2] = 1;
//    G.Edge[2][3] = 1;
//    G.Edge[3][0] = 1;
//    G.numVertices = 4;
//    G.numEdges = 4;
//    G.VerticesList[0] = '1';
//    G.VerticesList[1] = '2';
//    G.VerticesList[2] = '3';
//    G.VerticesList[3] = '4';

    //例c
    for (int i = 0; i < MAXV; ++i) {
        for (int j = 0; j < MAXV; ++j) {
            G.Edge[i][j] = 0;
        }
    }
    G.Edge[0][1] = 5;
    G.Edge[1][2] = 4;
    G.Edge[2][0] = 8;
    G.Edge[2][5] = 9;
    G.Edge[3][2] = 5;
    G.Edge[3][5] = 6;
    G.Edge[4][3] = 5;
    G.Edge[5][0] = 3;
    G.Edge[5][4] = 1;
    G.numVertices = 6;
    G.numEdges = 9;
    G.VerticesList[0] = '1';
    G.VerticesList[1] = '2';
    G.VerticesList[2] = '3';
    G.VerticesList[3] = '4';
    G.VerticesList[4] = '5';
    G.VerticesList[5] = '6';

    std::cout<<printVertices(G)<<"\n";

    return 0;
}

附录

408历年真题算法题解析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023年的专业408算法题 的相关文章

  • postman汉化包下载

    postman汉化包 https github com hlmd Postman cn releases postman官网下载地址 Download Postman Get Started for Free
  • 一帧数据接收方法

    最近在做485数据通讯 xff0c 遇到一些通讯问题 xff0c 特意去查找资料 xff0c 一帧数据接收有三种方法 xff0c 现分享如下 xff1a 第一种方法 xff1a 根据帧头和帧尾进行校验 xff0c 串口发送2字节例如 xff
  • 如何使用RTKLIB进行RTK定位(一)

    今天从这个demo xff0c 教给大家如何使用RTKLIB进行RTK定位 xff0c 包括配置文件 数据等 xff1b RTKLIB源码和exe下载地址 xff1a RTKLIB An Open Source Program Packag
  • C++ “::” 作用域符 双冒号

    一 是作用域符 xff0c 是运算符中等级最高的 xff0c 它分为三种 1 global scope 全局作用域符 xff09 xff0c 用法 xff08 name 2 class scope 类作用域符 xff09 xff0c 用法
  • OpenMv测距(Apriltag)

    利用OpenMv测离Apriltag的距离 xff08 其他色块啥的算法都差不多 xff0c 主要是Apriltag精确一些 xff09 span class token comment 本次利用OpenMv单目测距Apriltag离摄像头
  • CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake:27 (message)

    CMake Error at usr lib x86 64 linux gnu cmake Qt5Core Qt5CoreConfig cmake 27 message 在catkin make的时候 xff0c 如果提示 so文件报错 x
  • Deep-Sort多目标追踪算法代码解析

    Deep SORT是多目标跟踪 Multi Object Tracking 中常用到的一种算法 xff0c 是一个Detection Based Tracking的方法 这个算法工业界关注度非常高 xff0c 在知乎上有很多文章都是使用了D
  • 红黑树的查找时间复杂度O(logn)

    红黑树查找时间复杂度 如果二叉排序树是平衡的 xff0c 则n个节点的二叉排序树的高度为Log2n 43 1 其查找效率为O Log2n xff0c 近似于折半查找 如果二叉排序树完全不平衡 xff0c 则其深度可达到n xff0c 查找效
  • Ubuntu16.04环境下STM32和ROS间的串口通信

    目录 前言介绍 lt 1 gt 最终协议的样子 lt 2 gt 本方案提供的API实现的功能 原理 lt 1 gt 简要叙述 lt 2 gt 这里是如何使用共用体的 xff1f 前期准备 lt 1 gt 确保硬件连接 lt 2 gt 查看串
  • C++版本OpenCv教程(三十五 )Laplacian算子

    上述的边缘检测算子都具有方向性 xff0c 因此需要分别求取X方向的边缘和Y方向的边缘 xff0c 之后将两个方向的边缘综合得到图像的整体边缘 Laplacian算子具有各方向同性的特点 xff0c 能够对任意方向的边缘进行提取 xff0c
  • 【从零开始学深度学习编译器】五,TVM Relay以及Pass简介

    TVM Relay以及Pass简介 0x0 介绍0x2 Relay介绍0x2 1 使用Relay建立一个计算图0x2 2 Module xff1a 支持多个函数 xff08 Graphs xff09 0x2 3 Let Binding an
  • 模型量化的原理与实践 —基于YOLOv5实践目标检测的PTQ与QAT量化

    这里写自定义目录标题 一 量化基础知识 1 1 Tops是什么意思 1 2 什么是定点数 1 3 定点数转换 1 4 什么是量化 1 5 定点计算 1 5 1 定点计算 误差计算 1 5 2 定点计算 内存对比 1 5 3 定点计算 速度对
  • TensorRT INT8量化说明文档

    TensorRT developer guide intro quantization 7 Working with INT8 7 1 Introduction to Quantization 7 1 1 Quantization Work
  • YOLO-NAS讲解

    Meet YOLO NAS New YOLO Object Detection Model Beats YOLOv6 amp YOLOv8 代码链接 What is YOLO NAS What does the NAS in YOLO NA
  • Windows下jupyter notebook的安装和使用

    1 安装 xff1a xff08 1 xff09 首先打开Windows命令终端 xff1a 输入命令 xff1a pip install jupyter notebook 慢慢等待安装完成就可以了 我的是已经是安装完成了 在命令行窗口中输
  • 无人驾驶模型预测控制carSIM和MATLAB联合仿真

    本例参照龚建伟的 无人驾驶车辆模型预测控制 书中第四章节 1 carSIM软件介绍 carSIM是由美国MSC公司开发的车辆动力学仿真软件 xff0c 它可以方便灵活地定义实验环境和试验过程 xff0c 准确预测和仿真汽车的操纵稳定性 动力
  • Ubuntu之间通过有线网sftp传输文件

    两台Ubuntu设备之间有线网直连 xff0c 通过sftp传输文件 xff1a 打开有线连接 xff0c 配置ipv4 xff0c 可参考下图 xff1a 两台Ubuntu设备使用同一个网关 xff0c 但是地址ip必须不同 xff0c
  • 虚拟机VMware15中安装Ubuntu18.04步骤

    先安装虚拟机VMware15 xff1a 下载地址 xff1a Windows 10 64位下载链接 xff1a pan baidu com s 1Q9MVsEzVVoeOb99lQ1tsVQ 提取码 xff1a dggh Windows
  • 机械手基础知识(2)之机械手的正运动学和逆运动学问题

    开篇总结 xff1a 机械手运动学是机器人控制中的重要研究内容 xff0c 得知机械手各关节变量的大小 xff0c 可以计算出机械手末端的位姿 xff0c 这个过程叫做机械手的正向运动学 xff1b 获得机械手末端在笛卡尔空间中的位姿 xf
  • 一看就懂的LSTM+Attention,此处用softmax求概率

    1 序言 首先 xff0c 我是看这两篇文章的 但是 xff0c 他们一个写的很笼统 xff0c 一个是根据Encoder Decoder和Query key value 第二个讲的太深奥了 xff0c 绕来绕去 xff0c 看了两天才知道

随机推荐