算法
文章平均质量分 52
灰太狼!!!
少儿编程老师
展开
-
【动态规划】最大升序问题(详细代码)
【动态规划】给出一个由O和X组成的串,统计得分,每个O得分为目前连续出现的O的个数,X的得分为0,输出第K大的得分1.【题目描述】2.【代码】1.【题目描述】【题目描述】给出一个由O和X组成的串,统计得分,每个O得分为目前连续出现的O的个数,X的得分为0,输出第K大的得分。样例输入10 1OOXXOXXOOO样例输出32.【代码】#include<bits/stdc++.h>using namespace std;char a[100];int n,k,m,f[100]原创 2021-08-18 23:41:01 · 122 阅读 · 0 评论 -
【c++动态规划解决信奥赛一本通】1283:登山(详细代码)
【c++解决】五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?1.【题目描述】2.【代码】1.【题目描述】【题目描述】五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景原创 2021-08-17 11:27:03 · 2501 阅读 · 0 评论 -
【信奥赛一本通】1339:【例3-4】求后序遍历(详细讲解+代码)
c++解决,知道一个二叉树的前序序列和中序序列求后序序列?1.【题目描述】2.【基本概念】3.【基本思路】4.【代码】1.【题目描述】知道一个二叉树的前序序列和中序序列求后序序列?样例输入先序:ABDECFG中序:DBEAFCG样例输出后序:DEBFGCA2.【基本概念】前序:遍历顺序父节点左子节点右子节点;中序:遍历顺序左子节点父节点右子节点;后序:遍历顺序左子节点右子结点父节点;3.【基本思路】先序:ABDECFG中序:DBEAFCG1.我们先看先序遍历,先序遍历是根左右,原创 2021-08-17 09:33:52 · 871 阅读 · 0 评论 -
【多重背包】详细讲解+一维数组解决+二维数组解决
【完全背包】有n种物品和一个容量为v的背包,第i种物品最多有n[i]件可用,每件费用是w[i]价值是c[i],求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大1.【题目描述】2.【基本算法】3.【二维数组解决多重背包】4.【一维数组解决多重背包问题】1.【题目描述】有n种物品和一个容量为v的背包,第i种物品最多有n[i]件可用,每件费用是w[i]价值是c[i],求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大物品编号123重量原创 2021-08-11 17:39:32 · 3081 阅读 · 4 评论 -
【完全背包】详细解答+详细代码+一维数组解决+二维数组解决
【完全背包】有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?1.【题目描述】2.【递推思路】1.【基本思路】2.【本题思路】1.【题目描述】有n种物品和一个容量为v的背包,每一种背包无限使用,在不超过背包容量的前提下,求最大价值。物品编号1234重量2345价值34582.【递推思路】1.【基本思路】1.确定状态变量(函数)2.确定状态转移方程(递推关系)3.确定边界2.【本题思路】首原创 2021-08-11 16:54:02 · 10268 阅读 · 5 评论 -
【0-1背包问题 】详细解析+图解+详细代码
【0-1背包问题】有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?1.【题目描述】2.【递推思路】1.【基本思路】2.【本题思路】3.【图解】3.【代码】1.【题目描述】有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?物品数量4 背包容量8物品编号1234重量2345价值34582.【递推思路】1.【基本思路】1.确定状态变量(函数)2.原创 2021-08-10 22:17:53 · 38864 阅读 · 7 评论 -
【c++分治算法解决】最大子段和(详细代码)
【c++分治算法解决】最大子段和1.【题目描述】2.【思路】3.【代码】1.【题目描述】求一个序列的最大子段和即最大连续子序列之和【输入格式】第一行:一个整数,表示序列的个数第二行:包含n个以空间间隙的数,表示数列的元素【输出格式】输出有一行,即最大连续子序列之和【输入样例】84 -3 5 -2 -1 2 6 -2【输出样例】112.【思路】解决这个题使用分治思想,会出现以下三种情况1.最大值出现在中间数的左边2.最大值出现在中间数的右边3.最大值跨越最大值3.【代码】原创 2021-08-09 20:53:44 · 1837 阅读 · 0 评论 -
【c++分治算法解决归并排序】归并排序(图解+代码)
【c++ 分治算法】归并排序1.【概念】2.【思路】3.【代码】1.【概念】归并排序 :(Merge Sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并,使用中牺牲空间换取时间的算法2.【思路】1.解决归并排序需要使用分治思想,先分后治,先使用二分法对数组进行分,在进行治的时候还需要使用原创 2021-08-09 20:25:13 · 1935 阅读 · 0 评论 -
【c++递归回溯】给出一个正整数aa,要求分解成若干个正整数的乘积,即a=a1×a2×a3×...×an,并1<a1≤a2≤a3≤...≤an,问这样的分解的种数有多少。注意到a=a也是一种分解。
【c++递归回溯解决】1.【题目描述】2.【代码】1.【题目描述】【题目描述】给出一个正整数aa,要求分解成若干个正整数的乘积,即a=a1×a2×a3×…×an,并1<a1≤a2≤a3≤…≤an,问这样的分解的种数有多少。注意到a=a也是一种分解。【输入】第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1<a<32768)。【输出】n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数。【输入样例】 【输出样例】2原创 2021-08-05 22:45:20 · 6138 阅读 · 1 评论 -
【c++递归算法回溯算法解决】一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。
【c++递归思想回溯算法解决】一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。注意:0、-3、-6、-9……都可以认为是3的倍数。1.【题目描述】2.【代码】1.【题目描述】【题目描述】一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。注意:0、-3、-6、-9……都可以认为是3的倍数。【输入】输入的第一行包含两个数:N(2<原创 2021-08-05 22:33:20 · 1898 阅读 · 0 评论 -
回溯算法解决全排列问题(c++ 递归回溯思想)
回溯算法解决全排列问题用c++解决字符串全排列问题输入样例123输出样例123132213231312321代码#include<bits/stdc++.h>using namespace std;char a[100],b[100];bool c[100];int n;void fun(int m) { if(n==m) { cout<<b<<endl; } else { for(int i=0;i<原创 2021-07-30 17:25:52 · 301 阅读 · 2 评论 -
【递归思想】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。(c++)
【递归思想】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。1.【题目描述】2.【代码】1.【题目描述】【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。【输入】只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。【输出】输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。【输入样例】abc【输出样例】abcacbbacbcacabcba2.【代码】#include<bits原创 2021-08-04 17:47:57 · 6469 阅读 · 9 评论 -
【c++递推算法 】 有一个方格矩阵
c++递推算法解决:有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b、走过的格子立即塌陷无法再走第二次;c、只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。1.【题目描述】2.【思路】3.【代码】1.【题目描述】【题目描述】有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b、走过的格子立原创 2021-08-02 20:38:18 · 3457 阅读 · 0 评论 -
【c++ 递推算法:解决m行n列的方格矩阵】
c++递推算法1.【题目描述】2.【解题思路】3.【代码】1.【题目描述】X桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。有一只蚂蚁,由于蚂蚁只能向上或向右移动。蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……【输入】输入原创 2021-08-01 17:30:57 · 2510 阅读 · 0 评论