图的最短路径:Dijkstra算法
图的最短路径:Dijkstra算法 Dijkstra算法是一种基于贪心策略的算法。每次新扩展一个路程最短的点,更新与其相邻的点的路程(称为松弛),由于没有存在负边权,所以不会存在一个路程更短的,没有扩展过的点。 因此Dijkstra算法只能处理正边权的图。 示例题目 同Floyd算法中的城市旅游问题 解题代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283//最短路径——迪杰斯特拉算法#include<iostream>using namespace std;#define inf 999999;int city, road;//城市数量和道路数量//迪杰斯特拉算法void dijkstra(int** cityMap,bool* book,int...
C#学习记录-拓展方法
C#学习记录-拓展方法 拓展方法,即对现有的 非静态 变量类型添加新的方法 拓展方法可以为别人封装好的类型写额外的方法,提升程序的扩展性 必须写在静态类中 一定是一个静态函数 第一个参数用this修饰,后面跟上拓展的变量类型,作为拓展目标 注意拓展方法的访问修饰符 示例: 1234567public static class ToolBox{ public static void Printit(this int value) { Console.WriteLine(value); }} 这里为int类型拓展了一个新方法。注意写在静态类中,是一个静态函数 123456789101112namespace 拓展方法{ class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); ...
图的最短路径:Floyd算法
图的最短路径:Floyd算法 有些城市之间有公路,有些没有,为了节省时间经费,希望找到任意两个城市之间的最短路径。如下图: 如何求两点之间的最短路径? 要让任意两点之间的路径变短,只能尝试引入其他点,并通过中转才可能缩短距离 当任意两点间不允许经过第三个点时,城市之间的最短路径就是初始路径 可以逐步允许某个点进行中转,最后找出最短路径 解题代码 整体代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960//最短路径——弗洛伊德算法#include<iostream>using namespace std;#define inf 999999;//定义无穷大int city, road;//城市数量和道路数量//弗洛伊德算法void floyd(int** cityMap){ for (int i = 1; i <= city;...
C#学习记录-各种数组的定义
C#学习记录-各种数组的定义 一维数组的定义 123456789101112int[] array1;array1 = new int[5];int[] array2 = new int[5];//推荐int[] array3 = new int[5]{1,2,3,4,5};int[] array4 = new iny[]{1,2,3,4,5};int[] array5 = {1,2,3,4,5};//推荐 二维数组的定义 12345678910111213141516171819int[,] array1;array1={{1,2}, {3,4}};int[,] array2 = new int[3,3];//推荐int[,] array3 = new int[3,3]{{1,2,3}, {4,5,6}, ...
图的广度优先遍历:最少转机
图的广度优先遍历:最少转机 现在由若干航班信息,要求找出从起点到目的地的最少转机次数。数据给出格式如下: 123456785 7 1 51 21 32 32 43 43 54 5 第一行的5表示1,2,3,4,5,5个城市,7表示7条航线,1表示起点城市,5表示目标城市。 下面七行数据a b,表示从a到b有航线 现在求出最少转机次数 解题代码 整体代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384//图的广度优先遍历——最少转机#include<iostream>using namespace std;int city, road, startPonit, target;//城市数量,路线数量,起点城市,终点城市int minTime = 9999;//记录最小值struct...
图的深度优先遍历:城市地图
图的深度优先遍历:城市地图 从城市1到城市5,要求找出乘车时间最短的方案: 数据给出形式如下: 1234567895 81 2 21 5 102 3 32 5 73 1 43 4 44 5 55 3 3 第一行的5表示有5个城市1,2,3,4,5;8表示有8条公路。 接下来8行是a b c形式的三组数据,表示:有一条路可以从城市a到城市b,乘车耗时c分钟。 若道路为单向车道(即有向图),求出从城市1到城市5的最短时间 若道路为双向车道(即无向图),求出从城市1到城市5的最短时间 解题代码 整体代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364//图的深度优先遍历——城市地图#include<iostream>using namespace std;int city, road;//城市和公路int minLeng=9999999;//记录最小值void dfs(int**...
C#学习记录-索引器
C#学习记录-索引器 索引器可以让对象像数组一样访问其中的元素。让程序看起来更加直观。比较适用于类中有数组变量时使用,可以方便地访问和调整 语法 访问修饰符+返回值类型+this+【参数】 例: 12345678910111213141516171819202122232425class Person{ public int[] array = new int[10]; //索引器 public int this[int index] { get { if (index < array.Length) { return array[index]; } else return -1; } set { if (index < array.Length) ...
Qt学习记录-文件操作
Qt学习记录-文件操作 获取文件路径 利用QFileDialog对话框,让用户选择文件,获取文件路径 1QString path=QFileDialog::getOpenFileName(this,"打开文件","C:\\"); 第二个参数是弹出对话框的名字 第三个参数是默认打开的路径 利用QString来接收返回值 创建文件类 默认为UTF-8的打开方式 1234QFile file(path);//设置打开方式file.open(QIODevice::ReadOnly); 打开方式有很多种 读取文件 12345678ui->textEdit->setText(file.readAll());//第一种,全部读取 while(!file.atEnd()){ ...
C++学习记录-STL-map和multimap
C++学习记录-STL-map和multimap Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。 Multimap和map的操作类似,唯一区别multimap键值可重复。 map常用API 构造函数 12map<t1,t2> 名称;//默认构造函数map(另一个容器);//拷贝构造函数 赋值操作 12345//重载的 =...





