![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法入门
蛋淡的忧伤
小xuo生
展开
-
全排列的递归解法
本以为学会了递归,没想到用起来还是比较困难。遇到了一个全排列的题目,来再学习体验一下递归思想。 题目大意为输出数列1,2,…n的全排列。 如:1,2,3,的全排列为: 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 结题思路: 利用递归的思想,把问题的规模不断缩小,分成若干个子问题,...原创 2019-01-17 12:30:24 · 250 阅读 · 0 评论 -
洛谷P1219 八皇后
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。 上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是跳棋放置的一个解。请编一个程序找出所有跳棋放置的解。并把...原创 2019-05-06 10:27:34 · 147 阅读 · 0 评论 -
LIS--最长上升子序列
最长上升子序列,又称LIS,是动态规划的一个经典应用。 在原序列取任意多项,不改变它们在原来数列的先后次序,得到的序列称为原序列的子序列。最长上升子序列,就是给定序列的一个最长的、数值从低到高的子序列,最长上升子序列不一定是唯一的。 输入样例: 8 2 1 5 3 6 4 6 3 输出样例: 4 解释:它的最长上升子序列为1,3,4,6和2,3,4,6,长度均为4 ...原创 2019-05-14 10:13:49 · 159 阅读 · 0 评论 -
洛谷 P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beastbeast和astonishastonish,如果接成一条龙则变为beastonishbeastonish,另外相邻的两部分不能存在包含关系,例如atat和ati...原创 2019-05-06 19:16:27 · 330 阅读 · 0 评论 -
洛谷 P1101 单词方阵
题目描述 给一n \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着88个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如: 输入: 8 输出: qyizhong ...原创 2019-05-07 18:25:03 · 95 阅读 · 0 评论 -
洛谷 P1060 开心的金明(动态规划)
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的NN元。于是,他把每件物品规定了一个重要度,分为55等:用整数1-51−5表示,第55等最重要。他还从因特网上查到了每件物品的价格...原创 2019-05-15 15:58:11 · 176 阅读 · 0 评论 -
洛谷 P1164 小A点菜
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种。 uim指着墙上的价目表(太低级了没有菜单),说:“随便点”。 题目描述 不过uim由于买了一些辅(e)辅(ro)书,口袋里只剩MM元(M \le 10000)(M≤10000)。 餐馆虽低端,但是菜品种类不少,有NN种(N \le 100)(N≤100),第ii种卖a_iai元(a_i ...原创 2019-05-15 19:04:03 · 96 阅读 · 0 评论 -
洛谷 P1048 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是...原创 2019-05-15 20:15:51 · 124 阅读 · 0 评论 -
洛谷 P1049 装箱问题
题目描述 有一个箱子容量为VV(正整数,0 \le V \le 200000≤V≤20000),同时有nn个物品(0<n \le 300<n≤30,每个物品有一个体积(正整数)。 要求nn个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入输出格式 输入格式: 11个整数,表示箱子容量 11个整数,表示有nn个物品 接下来nn行,分别表示这nn个物品的各自体...原创 2019-05-15 20:46:30 · 156 阅读 · 0 评论 -
洛谷 P1616 疯狂的采药
题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最...原创 2019-05-15 22:13:34 · 76 阅读 · 0 评论 -
问题 E: 最长上升字串
问题 E: 最长上升字串 时间限制:3 Sec内存限制:128 MB 题目描述 给定n个整数,对其进行m次查询。每次查询是一个范围l到r,求出l到r的最长上升连续子串。上升连续子串的定义为一个连续的子串且严格递增。 输入 第一行是一个整数T,代表测试数据的组数。每组数据中第一行是一个整数n,m,代表有一共有n个人,m个查询。第二行共有n个整数,接下来m行是m次查询,每行两个整数l...原创 2019-05-16 20:33:06 · 395 阅读 · 0 评论 -
最长上升子串
给定一个数组求其最长上升子串 输入样例: 6 3 2 4 5 3 6 输出样例: 3 解释:子串区别于子序列,子序列不要求连续,子串要求连续 #include<cstdio> #include<algorithm> using namespace std; int dp[100]; int main() { int n,list[100],ans=...原创 2019-05-16 20:41:03 · 2345 阅读 · 0 评论 -
旅行
旅行 A君所在的城市可以抽象成为个有n(1 ≤n ≤ 20000)个点和m(1 ≤ m ≤ 50000)条无向边的地图。 A君住在1号点,他想进行一次环城市旅游。他从1号点出发,每次沿着和1号点相连的边中最短的边到下一个城市(如果有很多个最短的边,选择编号最小的走),到达下一个城市以后,还是沿着和这个城市相连的最短边走到下一个点(如果有很多个最短的边,选择编号最小的走),一直这样走下去,直到要...原创 2019-06-26 17:59:49 · 281 阅读 · 0 评论 -
洛谷 P1605 迷宫
题目背景 迷宫 【问题描述】 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫 中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。 输入样例 输出样例 【数据规模】 1≤N,M≤5 题目描述 输入输出格式 输入格式: 【输入】 第一行N、M...原创 2019-05-08 17:12:48 · 119 阅读 · 0 评论 -
蓝桥杯 激光样式
激光样式 x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果? 显然,如果只有3台机器,一共可以成5种样式,即: 全都关上(sorry,此时无声胜有声,这也算一种)开一台,共3种 开两台,只1种 30台就不好算了,国王只好请你帮忙了。...原创 2019-04-22 16:55:32 · 804 阅读 · 0 评论 -
多重背包动态规划及空间优化
题目描述: 有n种物品,第 i 种物品的价值是vai,体积时voi,个每种物品的数量是有限的,为cnti 现有容量为w的背包,请你放入若干物品,爱总体积不超过w的条件下,使总价值尽可能大 解题思路: 可以按01背包问题的思路解决,其实01背包问题就是特殊情况下的多重背包 可以每次把cnti个物品逐个拆分,转化为01背包 状态转移方程为: dp[i][j] = max( dp[i...原创 2019-02-12 13:09:37 · 199 阅读 · 0 评论 -
八皇后问题的递归解法与回溯优化
关于八皇后问题有很多种解法,今天只写一种利用全排列的解法,其他的一些解法看情况在整理补充。 全排列算法https://blog.csdn.net/qq_41706331/article/details/86521823 题目描述: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 结题思路: 对于这个问题如果采用组...原创 2019-01-17 12:52:24 · 366 阅读 · 0 评论 -
迷宫最短路径DFS与BFS
给定一个大小为NxM的迷宫。迷宫有通道和墙壁组成每一步可以向邻接的上下左右四格的通道移动。请求出起点到终点所需的最小步数。*表示障碍物,.表示可以通道。本题假定从起点一定可以移动到终点。 限制条件: N,M《 100. 样例 输入 5 5 ..... .*.*. .*S*. .***. ...T* 2 2 4 3 输出 11 BFS解法: #includ...原创 2019-01-24 12:39:22 · 528 阅读 · 1 评论 -
POJ3617字典序最小问题
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15444 Accepted: 4363 Description FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of the Ye...原创 2019-01-26 11:57:02 · 194 阅读 · 1 评论 -
贪心类
直线上有N个点,点i的位置是Xi,从这N个点中选择若干个,给他们加上标记。对每一个点,其距离为R以内的区域里必须有一个带有标记的点(自身带有标记的点,可以认为与其距离为0的地方有一个带有标记的点)。在满足这个条件的情况下,希望能为尽可能少的点添加标记。求出至少要有多少点被加上标记? 解题思路: 首先可以想到 方案一:每次都选择中间的点加上标记向两边去 方案二:每次都选择最左边的点距离...原创 2019-01-26 16:37:31 · 318 阅读 · 0 评论 -
简单DFS入门练习
1.求连通子块 #表示草地,上下左右连通的草地视为同一块草地,求一共多少块草地 #include<stdio.h> char map[20][20]; bool flag[20][20]; int n,m; void dfs(int x,int y) { if(x < 0 || x >= n || y < 0 || y >= m || flag[x]...原创 2019-02-01 11:56:37 · 671 阅读 · 0 评论 -
动态规划的简单例题(2)
上一篇:动态规划的简单例题(1) 题目: D点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如下图的C点),该马所在的点和所有跳跃一步可达的点称为对方马 的控制点,例如下图的C点上的马可以控制9个点(图中的P1,P2,……P8和C),卒不能通过对方马的控制点。 棋盘用坐标表示,A点(0,0)、B点(n,m)C点(Cx,Cy)(0<C...原创 2019-01-28 13:11:10 · 502 阅读 · 0 评论 -
动态规划的简单例题(1)
下一篇:动态规划的简单例题(2) 题目: 蒜头君要回家,如图所示,蒜头君在左下角位置,家在右上角位置。蒜头君走上一个格子会花费一定的体力(每个格子上的数字表示蒜头君要花费的体力值)。每一步蒜头君只能走到上面或右面的与当前相邻的一个格子。蒜头君想知道他回到家需要花费的最少体力值是多少? 解题思路: 蒜头君只能走到上面或右面的与当前相邻的一个格子,所以到家的前一步只有两种情况:...原创 2019-01-28 14:09:38 · 1815 阅读 · 0 评论 -
POJ No.2386 Lake Counting(DFS与BFS两种解法)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48096 Accepted: 23633 Description Due to recent rains, water has pooled in various places in Farmer John'...原创 2019-01-23 12:14:45 · 282 阅读 · 0 评论 -
LCS---最长公共子序列
求最长公共子序列的长度 如abcfbc和abfcab的最长公共子序列为:abfb,长度为4 将S1的前 i 个字符与S2的前 j 个字符的最长公共子序列长度记为lcs[i][j] 状态转移方程为: #include<iostream> #include<string> #include<algorithm> using namespace...原创 2019-02-09 13:53:25 · 123 阅读 · 0 评论 -
求最长公共子串
求最长公共子串的长度 如 dcabceh 和 abcedhf 的最长公共子串为abce,长度为4 状态转移方程为: #include<iostream> #include<string.h> #include<algorithm> using namespace std; int m...原创 2019-02-09 14:45:57 · 145 阅读 · 0 评论 -
求迷宫出路方案数遇到的小问题
今天遇到一个DFS题,题目本身不难但一直得到的不是正确结果好气,就是不知道错哪了。 题目大意是求迷宫有多少种不同的路径,我把题目简化一下 S是起点,E是终点,#是墙,. (点)可以通过 迷宫我直接初始化了 #include<stdio.h> char maze[5][5] = { {'S','.','.','.','.'}, ...原创 2019-01-30 15:05:26 · 330 阅读 · 1 评论 -
01背包动态规划空间优化
问题描述: 给定 n 种物品和一个容量为 w 的背包,物品 i 的价值是 vai,其体积为 voi。 问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 解题思路: 状态转移方程为: dp[i][j] = dp[i-1][j] j < vo[i] (即...原创 2019-02-12 11:35:28 · 210 阅读 · 0 评论 -
01分数规划
01分数规划问题 题目: 有一堆物品,每一个物品有一个收益ai,一个代价bi,选择n-k个物品使选择的最大。 输入输出格式: 第一行输入n,k。第二行是每个物品的收益,第三行是每个物品的代价。 输入样例: 3 1 5 0 2 5 1 6 输出样例: 0.83 解题思路: 我们设(选择的n-k个物品),则 这时就可以使用二分,尽可能使v大的情况下不断缩小两边的范围直到满...原创 2019-07-02 20:06:04 · 89 阅读 · 0 评论