day21 开发者偏爱Linux的9大理由
开发者偏爱Linux的9大理由我们日常使用的大多数设备运行的都是 Linux 或定制版本的 Linux。包括 Android 手机、平板电脑、相机、录像机、可穿戴设备、Chromebook 和其他设备。
有趣的事实:您使用的大多数互联网服务和社交媒体网站都在 Linux 上运行,因为这是最值得信赖的操作系统。
01强大的命令行
命令行有很多功能,它使您能够快速开发并自动执行日常任务。很多开发者喜欢它,正是因为它不需要鼠标或触控板。
除此以外还能使日常任务可以自动化。这可以帮助开发者专注于手头更重要的任务,并节省大量时间。Linux虽然不完美,但保持了终端的纯度。
02Linux 非常安全
因为 Linux 是开源的,由大型开发人员社区开发和维护的,所以捕获和修复安全漏洞的几率更高。此外,Windows 仍然是最受欢迎的操作系统,约占台式机和笔记本电脑市场的76.7%。因此,大多数攻击针对的都是Windows 而不是 Linux。
03对开发人员非常友好
与 Windows 用户相比,Linux 比以往任何时候都更加对用户友好。但正因为Linux 专门为开发人员提供的工具 ...
【2022暑期训练-4】7-6 哈利·波特的考试
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。
现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问你:带什么动物去可以让最难变的那种动物(即该动物变为哈利·波特自己带去的动物所需要的魔咒最长)需要的魔咒最短?例如:如果只有猫、鼠、鱼,则显然哈利·波特应该带鼠去,因为鼠变成另外两种动物都只需要念4个字符;而如果带猫去,则至少需要念6个字符才能把猫变成鱼;同理,带鱼去也不是最好的选择。
输入格式:输入说明:输入第1行给出两个正整数N (≤100)和M,其中N是考试涉及的动物总数,M是用于直接变形的魔咒条数。为简单起见,我们将动物按1~N编号。随后M行,每行给出了3个正整数,分别是两种 ...
【2022暑期训练-4】7-5 最短路径算法(Floyd-Warshall)
在带权有向图G中,求G中的任意一对顶点间的最短路径问题,也是十分常见的一种问题。
解决这个问题的一个方法是执行n次迪杰斯特拉算法,这样就可以求出每一对顶点间的最短路径,执行的时间复杂度为O(n3)。而另一种算法是由弗洛伊德提出的,时间复杂度同样是O(n3),但算法的形式简单很多。
在本题中,读入一个有向图的带权邻接矩阵(即数组表示),建立有向图并使用Floyd算法求出每一对顶点间的最短路径长度。
输入格式:输入的第一行包含1个正整数n,表示图中共有n个顶点。其中n不超过50。
以后的n行中每行有n个用空格隔开的整数。对于第i行的第j个整数,如果大于0,则表示第i个顶点有指向第j个顶点的有向边,且权值为对应的整数值;如果这个整数为0,则表示没有i指向j的有向边。当i和j相等的时候,保证对应的整数为0。
输出格式:共有n行,每行有n个整数,表示源点至每一个顶点的最短路径长度。
如果不存在从源点至相应顶点的路径,输出-1。对于某个顶点到其本身的最短路径长度,输出0。
请在每个整数后输出一个空格,并请注意行尾输出换行。
输入样例:1234540 3 0 10 0 4 02 0 0 00 0 1 ...
【2022暑期训练-4】7-7 公路村村通
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。
输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。
输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。
输入样例:123456789101112131415166 151 2 51 3 31 4 71 5 41 6 22 3 42 4 62 5 22 6 63 4 63 5 13 6 14 5 104 6 85 6 3
输出样例:112
思路: 该题为最小生成树问题,一般有两种算法,Prim算法、Kruskal算法。这里边的个数M≤3N,说明边的数量级与结点个数一致,使用Kruskal算法更好。如下采用Kruskal算法
代码:12345678910111213141516171819202122232425262728293031323334 ...
【2022暑期训练-4】7-2 并查集【模板】
给出一个并查集,请完成合并和查询操作。
输入格式:第一行包含两个整数N、M,表示共有N个元素和M个操作。
接下来M行,每行包含三个整数Z*i、Xi、Yi*。
当Z**i=1时,将X*i与Y*i所在的集合合并。
当Z**i=2时,输出X*i与Y*i是否在同一集合内,是的话输出Y;否则的话输出N。
输出格式:对于每一个Z**i=2的操作,对应一行输出,每行包含一个大写字母,为Y或者N。
输入样例:123456784 72 1 21 1 22 1 21 3 42 1 41 2 32 1 4
输出样例:1234NYNY
数据规模:对于30%的数据,N<=10,M<=20;
对于70%的数据,N<=100,M<=1000;
对于100%的数据,N<=10000,M<=200000。
思路: 该题为模板题目,主要有两步
1)合并 merge
2)查找 find
注意:该题需要路径压缩
代码:1234567891011121314151617181920212223242526272829303132333435363 ...
【2022暑期训练-4】7-3 部落
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。
输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:
K P[1] P[2] ⋯ P[K]
其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1开始连续编号,最大编号不会超过104。
之后一行给出一个非负整数Q(≤104),是查询次数。随后Q行,每行给出一对被查询的人的编号。
输出格式:首先在一行中输出这个社区的总人数、以及互不相交的部落的个数。随后对每一次查询,如果他们属于同一个部落,则在一行中输出Y,否则输出N。
输入样例:1234567843 10 1 22 3 44 1 5 7 83 9 6 4210 53 7
输出样例:12310 2YN
思路: 并查集的变形题目,通过根节点是否相同判断是否为同一个部落
代码:12345678910111213141 ...
【2022暑期训练-4】7-4 最短路径之Dijkstra
本题目要求通过读入无向网的边的信息(省略了各顶点的信息,仅用顶点编号来表示),构造图,并利用Dijkstra算法,求出指定源点到其它各点的最短路径。
输入样例:第一行,两个整数,顶点数vN和边数eN。以后若干行,是相关边的信息,无向图的边是对称的,只输入一半的边(小编号到大编号的,间以空格),最后两行各一个整数,前一个指定源点,后一个指定的查询的终到点。(注意,示例中34条边,只输入了17条边的信息)
123456789101112131415161718192010 340 1 20 3 51 2 51 3 22 4 82 5 43 5 43 6 24 7 54 5 25 6 35 7 95 8 76 8 77 8 37 9 48 9 808
输出样例:在一行中输出从源点到指定终点的短路径及代价,注意:所有符号均为西文符号。
10-->1-->3-->6-->8:13
思路: 最短路径的模板题 ,Dijkstra算法是解决单源最短路径问题的贪心算法
大体思路为先求出长度最短的一条路径,再参照该最短路径求出长度次短的一条路径,知道求出从源点 ...
【2022暑期训练-4】7-1 列出叶结点
“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。
520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看了……
我们将二叉树的“侧影”定义为从一侧能看到的所有结点从上到下形成的序列。例如下图这棵二叉树,其右视图就是 { 1, 2, 3, 4, 5 },左视图就是 { 1, 6, 7, 8, 5 }。
于是让我们首先通过一棵二叉树的中序遍历序列和后序遍历序列构建出一棵树,然后你要输出这棵树的左视图和右视图。
输入格式:输入第一行给出一个正整数 N (≤20),为树中的结点个数。随后在两行中先后给出树的中序遍历和后序遍历序列。树中所有键值都不相同,其数值大小无关紧要,都不超过 int 的范围。
输出格式:第一行输出右视图,第二行输出左视图,格式如样例所示。
输入样例:12386 8 7 4 5 1 3 28 5 4 7 6 3 2 1
输出样例:12R: 1 2 3 4 5L: 1 6 7 8 5
思路: 根据树的中序和后序遍历序列建立树,得到树的层次遍历序列 ...
day10 浏览器之争
全球浏览器的市场虽已基本成型,但除了头部的 Chrome 一骑绝尘之外,后面的几大浏览器角逐战仍在继续,不过,有时候其中的竞争方式让人摸不清头脑。
近日据外媒 ghacks.net 报道,当在 Firefox 浏览器中打开苹果的商务网站网址(https://business.apple.com/)时,页面会显示一条“您的浏览器不支持”的提示信息。
然而,此时的 Firefox 已更新到了最新版本,但是Firefox Stable、Firefox ESR 和 Firefox Nightly 等不同版本都会出现上述提示。
这也让不少用户和开发者感到纳闷,这到底是 Firefox 浏览器自身开发原因导致的网站不兼容,还是苹果的故意为之?
背后的两层因素针对这一问题,苹果公司给出的解决方案是,建议使用 Safari 浏览器,以及微软的 Edge 和 Google 的 Chrome,它们都可以访问商务网站,以及大多数基于 Chromium 的浏览器也会正常显示。当采用 Brave、Opera 浏览器时,也能正常访问。
关键就是一到Firefox 这里,就会出现上文的提示。苹果并未就为什么不支持 ...
day09 对象、类型、常量、字面量
C语言标准:对象、类型、常量、字面量本文中的某些关于C语言的内容与C++并不完全一致,请注意区分。
对象(Object)对象指数据存储的区域。并不是只有C++中的 class 才被称为对象,例如:
123int a; // a 是一个对象int* b; // b 是一个对象int c[6]; // c 是一个对象
C语言中其实没有变量的说法,通常说的变量准确地来说其实是对象,当然在不是很严肃的场合成为变量也无伤大雅,这里较真一下。
类型(Type)类型决定了如何解释对象或表达式结果的值的含义。
这里先列出C语言的基本类型(方便起见,省略了几乎没人用的_Complex和_Imaginary):
void
char
标准有符号整数类型(Standard signed integer type):signed char,short int,int,long int,long long int(C99)
标准无符号整数类型(Standard unsigned integer type):_Bool(C99),unsigned char,unsigned short int,unsign ...