
算法设计与分析题库
【linux嵌入式】玩家
linux嵌入式玩家
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
实验4,5
代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 10;int a[1010];bool vis[maxn];int path[maxn];int k,m;stack<char>st;bool flag = false;void dfs2(int dep,int ...原创 2020-04-27 15:50:42 · 287 阅读 · 0 评论 -
P1106删除问题(单调栈)
思路:单调栈维护一个递增序列,需要处理一些小细节,比说前导0等等,具体思路写在代码上了。代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 10;char s[maxn];void solved(){ int k; scanf("%s",s + 1); int len = st...原创 2020-04-01 18:27:27 · 255 阅读 · 0 评论 -
Fast Food(DP)
题意:给你n个饭店在横坐标轴上的位置,要你在这些饭店旁边建立k个仓库,使得所有饭店到最近的仓库距离之和最短,要你输出这个值。思路:这个题可以认为是管道问题的扩展版本,也可以认为是矩阵链乘的变种。定义dp[ i ] [ j ]:表示一共i个仓库在[1, j] 这些饭店的最短距离和转移方程:dp[ i ][ j ] = min(dp[i - 1] [k - 1] + dis[ k ] [...原创 2020-03-26 15:39:41 · 332 阅读 · 0 评论 -
Human Gene Functions(DP+LCS变种)
题意:给你两个序列,序列的取值是(A,G,T,C),并且给出一个他们之间的对应价值矩阵现在问题是,给你两个序列,你可以通过增加在字符串中间增加空格,最后要你求增加空格后的最大价值。思路:可以增加空格,那么一个简单的思想是通过增加空格使得字母匹配数最大化,这样就可以获得最大价值。那么难免会出现不匹配的情况,我们也需要考虑。这题和LCS的思路基本上是一样的,唯一不同的是LCS的三种状态转移...原创 2020-03-17 21:05:51 · 241 阅读 · 0 评论 -
FatMouse's Speed(DP+LIS变种)
题意:给你n个二元组(u,v),要你求最长的u是递增,v是递减的子序列。思路:这个题乍一看不就是个最长上升子序列吗?然后满足一个约束v是递减的求不就行了?思路确实是这样,不过需要预处一下按u递增v递减排序(因为满足约束并且可以往回找),这样可以把所有的子序列全部找出来,如果不预处理是找不出来的,因为可能要往回找,不太好处理,所以预处理了,前提是子序列不连续的,并且是可以往回找的(只要满...原创 2020-03-17 13:03:25 · 175 阅读 · 0 评论 -
FatMouse and Cheese(DP+记忆化搜索)
题意:给你一个N*N的的矩阵,要你找到一条最大的路径,并且每次只能水平或者垂直的走不超过k步,并且下一步的值要大于上一步的值,要你输出路径的最大值。思路:这个题不太难想到dp[ i ][ j ]可以由四个方向转移过来,但是这样做不了。因为无论你怎么搞都会存在有些转移本身就不是最优解,无法转移过来。这题需要用记忆化搜索思路和上面是一样的,不过记忆化搜索会搜到一个点,当他的四个方向的值都比他...原创 2020-03-17 10:20:44 · 189 阅读 · 0 评论 -
矩阵连乘问题
问题描述:矩阵连乘问题是通过给矩阵连乘时加括号,使得总的计算量最小。考虑3个矩阵相乘的例子, A1,A2,A3,假设这3个矩阵的维数分别为 10x100,100x50,5x50若按照((A1A2)A3)方式计算,需要的数乘次数为10x100x5+10x5x50 = 7500若按照(A1(A2A3))方式计算,需要的数乘次数为100x5x50+10x100x50 =75000思路:你可以...原创 2020-03-11 14:01:20 · 2928 阅读 · 0 评论 -
最长公共子序列
最长公共子序列问题Description给定两个序列 X={x1,x2,…,xm} 和 Y={y1,y2,…,yn},找出X和Y的最长公共子序列。Input输入数据有多组,每组有两行 ,每行为一个长度不超过500的字符串(输入全是大写英文字母(A,Z)),表示序列X和Y。Output每组输出一行,表示所求得的最长公共子序列的长度,若不存在公共子序列,则输出0。SampleInput...原创 2020-03-10 12:52:31 · 778 阅读 · 0 评论 -
整数因子分解问题
整数因子分解问题Description大于1的正整数n可以分解为:n=x1x2…xm。例如,当n=12 时,共有8 种不同的分解式:12=12;12=62;12=43;12=34;12=322;12=26;12=232;12=22*3。对于给定的正整数n,计算n共有多少种不同的分解式。Input输入数据只有一行,有1个正整数n (1≤n≤2000000000)。Outp...原创 2020-03-08 21:51:19 · 866 阅读 · 0 评论 -
半数集问题
问题描述:给定1个自然数n,求由n产生的半集数set(n)中的数:n∈set(n),在n左边加一个不超过最近添加的数一半的数,不断这样处理,直至不能添加自然数为止。如:输入n=6 得到set(6)={6,16,26,126,36,136,236},共6个元素。思路:这题比较简单,因为左边不能超过n/2,所以直接枚举每个数的[1,n/2],然后统计一下就行了。枚举到1的时候结束枚举,因为1再/...原创 2020-03-08 17:28:48 · 317 阅读 · 0 评论 -
棋盘划分问题
思路:为了完整的用完(4^k - 1)/3 个L型骨牌,不妨采用四等分划分,对于没有特殊方格的区域构造一个L型骨牌,这样使得所有区域再放一下L型骨牌刚刚好把整个棋盘放满,然后再进行四等分递归划分,直到只有一个方格时才结束划分,应该算是一个经典的分治法吧。代码:#include<bits/stdc++.h>using namespace std;const int maxn ...原创 2020-03-08 16:44:43 · 599 阅读 · 1 评论 -
最大间隙问题
最大间隙问题Description最大间隙问题:给定n个实数x1,x2,……,xn,求这n 个数在实轴上相邻2 个数之间的最大差值。假设对任何实数的下取整方法耗时O(1),设计解最大间隙问题的线性时间算法。对于给定的n 个实数x1,x2,……,xn,计算它们的最大间隙。Input输入数据的第1行有1个正整数n,n≤200000。接下来的1行中有n个实数x1,x2,……,xn。Out...原创 2020-03-07 17:15:08 · 2729 阅读 · 1 评论 -
选择问题
第k小的数Description现有一个包含n个整数(1<=n<=900000)的无序序列(保证序列内元素各不相同),输入一个整数k(1<=k<=n),请用较快的方式找出该序列的第k小数并输出。Input多组输入。首先输入一个数据组数T(1<=T<=100)接下来是T组数据。每组数据有两行。第一行先输入两个整数,n和k。接下来是一行输入n个由空...原创 2020-03-06 22:53:29 · 414 阅读 · 0 评论 -
整数划分问题
Problem Description“Well, it seems the first problem is too easy. I will let you know how foolish you are later.” feng5166 says.“The second problem is, given an positive integer N, we define an equa...原创 2020-03-06 19:09:17 · 360 阅读 · 0 评论 -
循环赛日问题
循环赛日问题:设有n=2^k个选手参加循环赛,要求设计一个满足以下要求比赛日程表:1)每个选手必须与其它n-1个选手各赛一次;2)每个选手一天只能赛一次。分析,按照上面的要求,可以将比赛表设计成一个n行n-1列的二维表,其中第i行第j列的元素表示和第i个选手在第j天比赛的选手号。思路:一开始我以为枚举全排列然后满足每行每列不出现同样的数字就行了,然后发现还要满足一个人一天只能赛一次,然...原创 2020-03-06 18:15:54 · 547 阅读 · 0 评论