
算法
文章平均质量分 50
算法是解决问题的一种方法或步骤。它可以被描述为一组计算步骤,用于解决特定问题的指令。算法可以在计算机程序中使用,以解决各种问题。常见的算法包括排序算法、查找算法、图形算法等。
Qiqy
喜欢村上春树的一句话:“有限的目标,能让人生变的简洁”
展开
-
【Hello算法】 > 第 3 关 >栈与队列
双向队列(double-ended queue)提供了更高的灵活性,允许在头部和尾部执行元素的添加或删除操作。由于链表节点需要额外存储指针,因此链表节点占用的空间相对较大。基于数组实现的栈在触发扩容时效率会降低,但由于扩容是低频操作,因此平均效率更高。基于链表实现的栈可以提供更加稳定的效率表现。基于数组实现的栈可能造成一定的空间浪费。将把元素添加到栈顶的操作叫作“队列(queue)是一种遵循。栈(stack)是一种遵循。,删除栈顶元素的操作叫作。逻辑的线性数据结构。规则的线性数据结构。原创 2024-04-22 11:53:38 · 636 阅读 · 0 评论 -
【Hello算法】 > 第 2 关 >数据结构 之 数组与链表
假如我们想实现字符到 ASCII 码的映射,则可以将字符的 ASCII 码值作为索引,对应的元素存放在数组中的对应位置。机器学习:神经网络中大量使用了向量、矩阵、张量之间的线性代数运算,这些数据都是以数组的形式构建的。每个节点都包含两项数据:节点的“值”和指向下一节点的“引用”。是一种线性数据结构,其将相同类型的元素存储在连续的内存空间中。链表:令单向链表的尾节点指向头节点(首尾相接),得到一个环形链表。是一种线性数据结构,其中的每个元素都是一个节点对象,各个节点通过“引用”相连接。原创 2024-04-10 12:13:13 · 1129 阅读 · 0 评论 -
【Hello算法】 > 第 1 关 > 初识 算法 与 复杂度分析
Hello算法—速通笔记—第一集What are algorithms and data structures ?原创 2024-04-10 10:02:08 · 1054 阅读 · 0 评论 -
【ACM】算法题-最少硬币问题 (c++)(动态规划)(多重背包问题)
最少硬币问题题目设有 n 种不同面值的硬币,各硬币的面值存于数组 T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组 Coins[1:n]中。对任意钱数 0≤m≤20001,设计一个用最少硬币找钱 m 的方法。算法设计:对于给定的 1≤n≤10,硬币面值数组 T 和可以使用的各种面值的硬币个数数组 Coins,以及钱数 m,0≤m≤20001,计算找钱 m 的最少硬币数。输入第一行中只有 1 个整数给出n 的值,第 2 行起每行 2 个数,分别是 T[j]和 Coi原创 2020-07-27 09:35:59 · 5621 阅读 · 2 评论 -
【ACM】算法题-把数组排成最小的数(C++)(排序)(效率算法)
把数组排成最小的数题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。样例输入复制3 3 32 321样例输出复制321323解析在输出最小的数,不输出前导的0情况下,对所有数进行合理排列是首要的一点,再全部输出,其中转化为字符串处理更加方便,在构思排序的过程中应该想到字典序排列。( 思路一)(字典序排列 )bool cmp(const string &原创 2020-07-22 12:51:14 · 1075 阅读 · 0 评论 -
【ACM】算法题-数字三角形 (数学)(动态规划)(C++)
数字三角形题目73 88 1 02 7 4 44 5 2 6 5 (图一)图一表示一个5行的数字三角形。假设给定一个n行数字三角形,计算出从三角形顶至底的一条路径,使该路径经过的数字总和最大。 每一步只能由当前位置向下或向右下。输入你的程序要能接受标准输入。第一行包含一个整数T,表示总的测试次数。对于每一种情况:第一行包含一个整数N,其中1 < N < 100,表示三角形的行数。接下来的N行输入表示三角形的每一行的元素Ai,j,其中0 < Ai,j < 100。原创 2020-07-26 14:35:35 · 2978 阅读 · 0 评论 -
【ACM】算法题-数列排序 (C++)(快速排序基本思想)
数列排序题目数列排序快速排序排序的划分模拟:将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。输入输入有多行,第一行为N表示行数,每行9个整数.输出输出N行(不超过100行),按要求进行排序的结果.样例输入26 8 9 1 2 5 4 7 33 5 8 9 1 2 6 4 7样例输出3 4 5 2 1 6 8 9 72 1 3 5 8 9 6 4 7解析这是一道难度为二级的普通排原创 2020-08-01 09:10:47 · 1895 阅读 · 5 评论 -
【ACM】算法题-求素数(筛法求素数)(由简至难C++多种解法)
求素数(依题限制多种解法)(C++)题目从键盘上输入一个正整数N(N<=100),求N之内的素数样例输入复制100样例输出复制2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97解法素数一般指质数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,否则称为合数。方法一(简单)「效率为O(sqrt(n))」(局部)bool is_prime(int n) {//O(sqrt(原创 2020-07-25 22:22:28 · 2446 阅读 · 0 评论 -
【数据结构】算法题-括号匹配(栈)(C++)
括号匹配题目在编程当中我们只会用到三种括号:圆括号(),方括号[]和花括号{},编译器在编译的时候会检查括号是否正确匹配。例如{[()]}、{()[]{}}都是合法的匹配。但是([)]则是不合法的匹配。请编写一个程序来判断输入的括号序列是否合法。输入测试数据由多组,每组数据有一行,为( ) [ ] { }组成的序列,长度不超过1000输出对于每组数据输出一行,如果是合法匹配则输出YES,不合法则输出NO,请注意大小写样例输入{([()]{})}样例输出YES思路小导本题也是解法众原创 2020-08-09 09:52:47 · 3294 阅读 · 2 评论 -
【ACM】算法题-连续和(数学)(递归)(动态规划)(二分法)(多解)
ACM数学专题:连续和题目描述对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M。例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。输入包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000)输出每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排原创 2020-08-05 17:47:50 · 1736 阅读 · 1 评论 -
【ACM】算法题-序列的深度(c++)(栈)(STL)(动态规划)(图论)
序列的深度题目描述一个合法的括号匹配序列有以下定义:1、空串"“是一个合法的括号匹配序列2、如果"X"和"Y"都是合法的括号匹配序列,“XY"也是一个合法的括号匹配序列3、如果"X"是一个合法的括号匹配序列,那么”(X)“也是一个合法的括号匹配序列4、每个合法的括号序列都可以由以上规则生成。例如: “”,”()”,"()()","((()))“都是合法的括号序列对于一个合法的括号序列我们又有以下定义它的深度:1、空串”"的深度是 02、如果字符串"X"的深度是 x,字符串"Y"的深度是原创 2020-08-07 16:11:23 · 459 阅读 · 0 评论 -
【ACM】算法题-数列有序 (C++)(插入排序)(O(n^2)的时间复杂度)
数列有序题目数列有序有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。输入输入数据包含多个测试实例,每组数据由两行组成,第一行是n和x,第二行是已经有序的n个数的数列。n和x同时为0标示输入数据的结束,本行不做处理。输出对于每个测试实例,输出插入新的元素后的数列。样例输入3 31 2 40 0样例输出1 2 3 4解析这是一道难度为二级的普通排序算法题,排序算法有多种,我这里用的是插入排序的方法原创 2020-08-01 09:23:48 · 908 阅读 · 0 评论 -
【ACM】算法题-选择排序 (C++)(排序算法)(递归实现)
选择排序题目选择排序排序,顾名思义,是将若干个元素按其大小关系排出一个顺序。形式化描述如下:有n个元素a[1],a[2],…,a[n],从小到大排序就是将它们排成一个新顺序a[i[1]]< a[i[2]]< …< a[i[n]]i[k]为这个新顺序。选择排序的思想极其简单,每一步都把一个最小元素放到前面,如果有多个相等的最小元素,选择排位较考前的放到当前头部。还是那个例子:{3 1 5 4 2}:第一步将1放到开头(第一个位置),也就是交换3和1,即swap(a[0],a[1]原创 2020-08-01 15:38:23 · 3691 阅读 · 4 评论 -
【ACM】算法题-寻找ABCDEF (优化)(搜索)
寻找ABCDEF题目描述在[1,100]中寻找6个数ABCDEF,满足A<=B<=C<=D<=E<=FA<=B<=C<=D<=E<=FA<=B<=C<=D<=E<=FA5+B5+C5+D5+E5==F5A^5+B^5+C^5+D^5+E^5==F^5A5+B5+C5+D5+E5==F5输出所有的解,无输入,输出ABCDEF用空格分割。解析题目条件很简单,重点依然是要程序在几秒内实现它,第一点很多人会想到的是六重原创 2020-08-06 10:16:20 · 779 阅读 · 0 评论 -
【数据结构】算法题-Fibonacci数列 (C++)(递推思想)
Fibonacci数列题目输入一个正整数n,求Fibonacci数列的第n个数。Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,概述是前面两个数之和。即:要求输入的正整数n不超过50.【输入】一个不超过50的正整数【输出】Fibonacci数列的第n个数,末尾输出换行。样例输入20样例输出6765解析本题是一道简单的递推题,其中可影射动态规划的基本思想,以小见大,主要思路是寻找递推的规律,本题非常直白的给出F(n)=F(n-1)+F(n-2)(n>=原创 2020-08-02 15:05:15 · 538 阅读 · 0 评论 -
【ACM】算法题-阿尔法GO的缺陷(深度搜索解法)(C++)
阿尔法GO的缺陷题目众所周知阿尔法GO在围棋上的深度学习能力目前无可匹敌,这天工程师小马想到了一个问题。因为小马很懒,他想把阿尔法GO改造成可以做家务的机器人,虽然阿尔法GO的算法很强,但是它的眼睛却不好使。首先就要改进图像识别,因为它会深度学习,所以你只需要教会它识别简单的图像,它就会自动学习其他更复杂的图像。现在有一些只含有A和H的图像,你能帮助小马吗?输入第一行输入整数T,表示数据的组数。每组数据中,第一行是两个正整数n和m,表示图像的大小。接下来有n行,每行m个字符,只可能为‘.’ 或‘原创 2020-08-11 09:34:14 · 788 阅读 · 0 评论 -
【ACM】算法题-水池数目(C++)(宽度搜索)(队列)(递归)
水池数目题目校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。输入第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数n(0<n<100)与列数m(0<m<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)输出输出该地图中水池的个数。要注意,每个水池的旁边(上下左原创 2020-08-09 17:27:33 · 421 阅读 · 0 评论 -
【ACM】算法题-迷宫的最短路径 (宽度搜索)(C++)(数据结构)(图论)
迷宫的最短路径题目给定一个大小为n*m的迷宫。迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动。请求出起点到终点所需的最小步数。(注:本题假定从起点一定可以移动到终点)如图:#S######.#......#..#.#.##.##.#.#........##.##.####....#....#.#######.#....#......####.###.....#...G#求S->G的最短路径输入第一行是N 【2,,200】M【2,200】输出出口S到G原创 2020-08-10 09:16:45 · 2501 阅读 · 1 评论 -
【ACM】算法题-迷宫寻宝(宽度搜索)(C++)
迷宫寻宝题目一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,不限时间和步数,当然也没有陷阱,请你判断他能不能顺利的得到宝藏。输入多组输入每组测试数据的第一行包含了两个整数M,N(1<N,M<20)(n=0&&m=0表示输入结束),分别代表了迷宫的行和列。接下来的M每行有N个字符,描述了迷宫的布局。其中每个字符的含义如下:.表示可以走的路S:表示ACM的出发点G表示宝藏的位置#表示这里有墙,ACM无法进入或者穿过。输出每行输出一个YES表示A原创 2020-08-14 16:21:49 · 1905 阅读 · 0 评论 -
【ACM】算法题-水池数目(C++)(深度搜索)(C++)
水池数目题目校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。输入第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数n(0<n<100)与列数m(0<m<100),然后,输入接下来的m行每行输入n个数,表示此处有水还是没水(1表示此处是水池,0表示此处是地面)输出输出该地图中水池的个数。要注意,每个水池的旁边(上下左原创 2020-08-11 10:46:06 · 1279 阅读 · 0 评论 -
【ACM】算法题-阿尔法GO的缺陷(宽度搜索解法)(C++)
阿尔法GO的缺陷题目众所周知阿尔法GO在围棋上的深度学习能力目前无可匹敌,这天工程师小马想到了一个问题。因为小马很懒,他想把阿尔法GO改造成可以做家务的机器人,虽然阿尔法GO的算法很强,但是它的眼睛却不好使。首先就要改进图像识别,因为它会深度学习,所以你只需要教会它识别简单的图像,它就会自动学习其他更复杂的图像。现在有一些只含有A和H的图像,你能帮助小马吗?输入第一行输入整数T,表示数据的组数。每组数据中,第一行是两个正整数n和m,表示图像的大小。接下来有n行,每行m个字符,只可能为‘.’ 或‘原创 2020-08-11 09:16:16 · 375 阅读 · 0 评论