- 博客(21)
- 收藏
- 关注
原创 字符串中空格的替换
[算法题] 实现字符串中空格的替换给定一个StringBuilder类型的字符串str,将str中所有的空格全部替换为"$00"解题思路:将str按照下标一个字符一个字符的赋值到另外一个字符串对象s中public StringBuilder replaceSpace(StringBuilder str){ StringBuilder sb = new StringBuilder (); String s = str.toString(); for(int i=0;i<s.length();
2020-12-23 15:13:14 337
原创 步数最少问题
内容:在一个(100100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一个走黑马,一个走白马。谁用最少的步数走到左上角坐标为(1,1)的点时,谁获胜。现在他请你帮忙,给你A、B两点的坐标,想知道两个位置到(1,1)点可能的最少步数。约束条件:不能越出界外。该点在以前的扩展中没有到达过。分析:存储从(1,1)可达的点(...
2019-10-31 21:52:03 499
原创 单源最短路径问题
内容:给定带权有向图G=(V,E),其中每条边的权是非负实数。给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度,这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。分析:算法从优先队列中取出具有最小当前路长的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的所有顶点。剪枝规则:如果从当前扩展结点i到顶点j有边可达,且从源出发,途经顶点i再到顶点j...
2019-10-31 21:03:52 887
原创 背包问题
背包问题给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 wi ,价值vi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。当作0-1背包问题,用动态规划算法,获得最优值220;当作0-1背包问题,用贪心算法,按性价比从高到底顺序选取物品,获得最优值160。由于物品不可分割,剩下的空间白白浪费。当作背包问题,用贪心算法,按性价比从高到底的顺序选取物品,获得最优值2...
2019-10-31 20:47:22 298
原创 各章节重点总结
1.递推算法定义:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。*无论顺推还是逆推,其关键是要找到递推式顺推法:所谓顺推法是从已知条件出发,逐步推算出要解决的问题的方法叫顺推。逆推法:所谓逆推法从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条...
2019-10-31 20:38:14 614
原创 旅行商问题
内容:一销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。本题假定该旅行商从第1个城市出发。分析:对每个测试例,第1行有两个整数:n(4≤n≤10)和m(4≤m≤20 ) ,n是结点数,m是边数。接下来m行,描述边的关系,每行3个整数:(i,j),length,表示结点i到结点j的长度是length。当n=0时,表示输入...
2019-10-27 16:19:57 578
原创 n皇后问题
内容:在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。分析:由于棋盘的每列/行只有一个皇后,所以可以用一维向量X( x1, x2, …, xn),其中xi∈{1, 2, …, n},表示第i列皇后所在的行x[i],即解空间的每个结点都有n个儿子,因此解空间的大小为nn,这是一棵子集树。代码:#define NUM ...
2019-10-27 13:34:05 314
原创 装船问题
内容:给定n个集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为wi。集装箱装载问题要求确定在不超过轮船载重量的前提下,将尽可能多的集装箱装上轮船(贪心算法中的装载问题讨论的是装载件数;本题讨论的是最大装载重量。)由于集装箱问题是从n个集装箱里选择一部分集装箱,假设解向量为X(x1, x2, …, xn),其中xi∈{0, 1}, xi =1表示集装箱i装上轮船, xi =0表示集装箱i不...
2019-10-27 11:47:36 1219
原创 素数环问题
内容:从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。分析:数据初始化;判断第i个数填入是否合法;如果合法则填数;判断是否到达目标(20个已填完):是,打印结果;不是,递归填下一个;如果不合法:选择下一种可能。代码://素数环问题#include#include#include#includeusing namespace std;bool b[21]=...
2019-10-26 22:03:36 470
原创 输油管道问题
内容:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。给定n口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和。分析:第1行是一个整数n,表示油井的数量(1≤n≤10 000)。接下来n行是油井的位置,每行两个整数x和y(﹣10 000≤x,y≤10 000)。各油井到主管道之间的...
2019-10-26 21:45:45 269
原创 汽车加油
内容:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n <= 5000)和k(k <= 1000)个加油站位置,编程计算最少加油次数。分析:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第...
2019-10-26 21:27:47 478
原创 区间合并
内容:给定 n 个闭区间 [ai; bi],其中i=1,2,…,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;2] 和 [2;3] 可以合并为 [1;3],[1;3] 和 [2;4] 可以合并为 [1;4],是[1;2] 和 [3;4] 不可以合并分析:定义区间结构体进行存储并定义比较函数将输入的区间组排序后,左右两边进行分治,直至缩小到两个小区间合并问题如果不能合并,...
2019-10-26 14:04:24 298
原创 循环赛日程表
内容:设有n=2k个选手要进行循环赛,设计一个满足以下要求的比赛日程表:每个选手必须与其他n-1个选手各赛一次;每个选手一天只能赛一次;循环赛一共进行n-1天。代码:#include using namespace std;#define MAX 100int a[MAX][MAX];void Copy(int tox, int toy, int fromx, int from...
2019-10-26 13:59:59 331
原创 活动安排问题
代码:#include#include#includeint main(){struct action{int s;int f;int index;};action a[1000];bool cmp(const action &a,const action &b){if (a.f<=b.f) return true;return false;}...
2019-10-16 08:41:58 156
原创 递归求平方和函数
代码:#include#includeusing namespace std;int f(vector v,int n){if(n==1) return 1;else{ int m=0; m+=v[n-1]*v[n-1]; return m+f(v,n-1);}}int main(){vector v;int n;cout<<“输入一个整数:”;...
2019-10-09 08:48:46 1466
原创 众数与重数
代码:#include#includeusing namespace std;int num=0;int sum=0;int count(int a[],int s,int e){int n=a[(s+e)/2];int counts=0;for(int i=s;i<e;i++) {if(a[i]==n)counts++;}return counts;}int...
2019-10-09 08:40:38 183
原创 正逆序输出
正序输出代码:#include using namespace std;void func( int n){if(n/10==0)cout<<n;else{func(n/10);cout<<n%10;}}main(){func(12345);}逆序输出#include using namespace std;void func( int ...
2019-10-09 08:34:02 312
原创 10进制转化为radix进制
代码:#includeusing namespace std;void change(int num,int radix){if(num != 0 ){change(num/radix , radix);cout<< num%radix;}}int main(){int n,radix;cin>>n>>radix;}
2019-10-08 21:29:32 162
原创 全排列问题
设 R={r1,r2,…,rn} 是要进行排列的 n 个元素,Ri=R-{ri}。集合 X 中元素的全排列记为 perm(X)。(ri)perm(X) 表示在全排列 perm(X) 的每一个排列前加上前缀得到的排列。R 的全排列可归纳定义如下:当 n=1 时,perm®=®,其中 r 是集合 R 中唯一的元素;当 n>1 时,perm®由 (r1)perm(R1),(r2)perm...
2019-10-08 19:50:12 173
原创 求N层汉诺塔的移动次数
代码:#includeusing namespace std;int main(){int f[1000]={0,1};int n;cout<<"n = ";cin>>n;for(int i = 2;i <= n; i++){f[i] = 2*f[i-1] + 1;}cout<<“N层汉诺塔移动次数为:”<<f[n]<...
2019-10-08 19:45:41 943
原创 递推算法
斐波那契数列问题Fibonacci 数列:0,1,1,2,3,5,8,13,21,34,……f0 = 0f1 = 1fn = fn-1 + fn-2 ( n >= 2 )分析:可以用迭代方法求解,为了得到当前项,![要使用前两项,所以用两个变量迭代。代码:猴子吃桃猴子第一天采摘了一些桃子,第二天吃了第一天的一半多一个,第三天吃了第二天的一半多一个…直到第十天就剩下一个。问:猴...
2019-10-08 19:38:14 159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人