数据结构课程设计交通查询系统设计 [问题描述] 今天铁路交通网络非常发达,人们在出差、旅游时,不仅关注交通费用,还关注里程和时间。请按照下图设计一个交通查询系统,能够满足旅客查询从任一个城市到另一个城市的最短里程、最低花费、最短时间、最少中转次数等问题。 [基本要求] 设计合适的数据结构和算法编写程序完成上述功能,并具有查询界面,能够按照下拉菜单选项进行选择查询。 Dijkstra写法: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361 ...
算法-排序详解[多语言实现]一.冒泡排序1.最常见的写法: 最基础的冒泡排序实现 c++: 12345678910void bubbleSort(vector<int>& arr) { int length = arr.size(); // 减少消耗 for (int i = 0;i < length - 1;i++) { for (int j = 0;j < length - 1 - i;j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } } }} JavaScript: 12345678910function bubbleSort(arr) { let length = arr.length for(let i=0;i<length-1;i++) { for(let j=0;j<length-1-i;j++) ...
字符串一、字符串的基本定义与特性1. 定义方式 双引号:"hello" 单引号:'hello' 反引号(模板字符串):hello 2. 字符串的不可变性 字符串是不可变类型,一旦创建就无法更改其内容,只能生成新的字符串。 123let str = "hello";str[0] = "H"; // 无效console.log(str); // "hello" 3. 字符串与 Unicode JavaScript 使用 Unicode 编码,每个字符占用 2 个字节。 可以使用转义字符表示特殊字符,例如: 1let str = "Hello\u0041"; // "HelloA" 二、字符串的常用操作1. 字符串的长度 使用 .length属性获取字符串的长度: 12let str = "hello";console.log(str.length); // 5 2. 字符串访问 使用索引访问字符串中的字符: 12let st ...
数学罗马数字罗马数字是一种古老的数字表示方法,起源于古罗马,至今仍在一些特定场合被使用,比如钟表、书本章节、电影序列号等。罗马数字使用几个基本符号来表示不同的数值,这些符号包括: 基本罗马数字符号及对应值: 罗马数字 阿拉伯数字 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 罗马数字的书写规则: 重复表示加法:相同的数字连写,其值等于这些数字相加。例如: II = 1 + 1 = 2 III = 1 + 1 + 1 = 3 小数字在大数字右边表示加法:如 VI = 5 + 1 = 6,XV = 10 + 5 = 15。 小数字在大数字左边表示减法:如 IV = 5 - 1 = 4,IX = 10 - 1 = 9。 同一数字不能连续重复超过三次:例如,4 不写作 IIII,而是写作 IV;9 不写作 VIIII,而是写作 IX。 从左到右按数值从大到小排列,例如: LXVIII = 50 + ...
数据结构-实验四查找和排序算法实现1、各种排序算法的实现 用随机函数生成16个2位正整数(10~99),对同一组数据分别实现直接插入排序、 折半插入排序、希尔排序;冒泡排序、快速排序;选择排序、堆排序;二路归并排序; 基数排序等多种排序算法,输出排序中间过程、统计关键字的比较次数和记录的移动次 数。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 ...
2024第十五届蓝桥杯C/C++B组试题A 握手问题(本题总分:5分) 【问题描述】 小蓝组织了一场算法交流会议,总共有50人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进,行一次握手(且仅有一次)。但有7个人,这7人彼此之间没有进行握手(但,这7人与除这7人以外的所有人进行了握手)。请问这些人之间一共进行了多,少次握手? 注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 123456789101112131415#include<iostream>//A握手问题using namespace std;int fact(int n)//用递归{ if (n == 0)return 0; return n + fact(n - 1);}int main(){ int a7 = 43 * 7;//这7 ...
数据结构-实验三图的操作与实现 利用图的邻接表和邻接矩阵存储结构设计并实现各种操作算法(任选一种存储结构 来实现算法)。 1、图的邻接表和邻接矩阵存储 建立下图的邻接表和邻接矩阵,并输出之。 12345678910graph LR 0 ---|28| 1 1 ---|16| 2 2 ---|12| 3 3 ---|22| 4 4 ---|25| 5 5 ---|10| 0 1 ---|14| 6 3 ---|18| 6 4 ---|24| 6 1.邻接矩阵12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#include<iostream>using namespace std;#define max_vexs 100#define max_number 9999typedef struct Graph { char vexs[ma ...
动态规划动态规划(Dynamic Programming, 简称 DP)是计算机科学中一种重要的算法设计思想,常用于解决具有 重叠子问题 和 最优子结构 性质的问题。以下是动态规划相关的知识点总结: 动态规划的核心思想 重叠子问题 问题可以被分解为子问题,子问题之间有重复计算。 示例:斐波那契数列,F(n) = F(n-1) + F(n-2),需要重复计算子问题。 最优子结构 一个问题的最优解可以由其子问题的最优解组合得到。 示例:最短路径问题,某个节点的最短路径由其前驱节点的最短路径加上路径长度决定。 状态转移方程 明确当前状态与之前状态之间的关系。 示例:dp[i] = dp[i-1] + dp[i-2](斐波那契数列)。 动态规划的分类1. 按解题顺序分类 自顶向下(记忆化搜索) 通过递归实现,配合缓存避免重复计算。 示例:斐波那契数列递归实现,使用数组存储中间结果。 自底向上(迭代) 从最小子问题开始计算,逐步推导出原问题的解。 示例:斐波那契数列用循环计算。 2. 按问题类型分类 线性动态规划 问题有线性结构,例如:最长递增子序列、斐波那契数列。 ...
数据结构15-图的创建及其遍历方法(BFS+DFS)1.使用邻接矩阵表示第一种小写法: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#include<iostream>using namespace std;#define max_vexs 100#define max_number 9999typedef struct Graph { char vexs[max_vexs]; int arcs[max_vexs][max_vexs]; int vexsnumber; int arcsnumber;};// 初始化的是这个有权图的顶点数目已经这个有权图的边的数目,还有这个有权图的边进行初始化Graph* InitGraph(int vexs,int arcs) { // 初始化这个有权图 Graph* G = new Graph; G->vex ...