自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 动态规划之0-1背包

题目描述给定n种物品和一个背包,物品i的重量是Wi,其价值为Vi,背包的容量为C。如何选择装入背包的物品,可以使得装入背包中物品的总价值最大?输入每组输入包括三行,第一行包括物品个数n,以及背包容量C。第二、三行包括两个一维数组,分别为每一种物品的价值和重量。输出输出包括两行,第一行为背包的最大总价值,第二行为所选取的物品。例如:最大总价值=15,物品选取策略为11001。数据保证答案唯一。样例输入Copy5 106 3 5 4 62 2 6 5 4样...

2021-06-27 01:40:20 167

原创 贪心算法----最小生成树(Prim)

题目描述使用Prim算法求图的最小生成树(MST)输入每组数据分为两个部分,第一部分为图的点数n,和边数m,第二部分为m行,每一行输入三个数字,前两个为两个顶点的编号,第三个为边权重。输出最小生成树,输出时按照边的两个端点的升序输出。(先看左端点,再看右端点,端点不换位置)样例输入Copy3 30 1 100 2 151 2 50样例输出 Copy0 1 100 2 15#include<stdio.h>#include<s...

2021-06-27 00:51:26 812

原创 贪心算法之最优装载问题

题目描述使用贪心算法求解最优装载问题。输入每组输入包括两部分,第一行包括集装箱个数n,以及船的装载量C。接下来n行每行则输入集装箱编号以及其重量。#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int n;int c; struct box{ int weight; int index;...

2021-06-27 00:13:22 553

原创 贪心算法之活动安排问题

#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;struct Activity{ int sTime; int fTime; };bool cmp(Activity a,Activity b){ return a.fTime<b.fTime;}Activity activity[1000];int activitySelect(int.

2021-06-26 22:44:11 96

原创 贪心算法之部分背包问题

部分背包/最大收益等等#include <iostream>#include<stdio.h>#include <algorithm>#include<stdlib.h>using namespace std;//当前背包装入的重量 int M,N;struct Element{ double w; double v; double p;};Element a[105];bool cmp(Element a,Element

2021-06-26 22:25:07 78

原创 最大子段和---动态规划

题目描述给定n个整数(可能是负数)组成的序列a[1], a[2], a[3], …, a[n],求该序列的子段和如a[i]+a[i+1]+…+a[j]的最大值。输入每组输入包括两行,第一行为序列长度n,第二行为序列。输出输出字段和的最大值。样例输入Copy5-1 0 1 2 3样例输出 Copy6#include <iostream>#include<stdio.h>int a[105],b[105],n,maxSum;voi.

2021-06-26 19:13:25 242

原创 牛牛的字符串

题目描述牛牛有两个字符串(可能包含空格),他想找出其中最长的公共连续子串的长度,希望你能帮助他。例如:两个字符串分别为"abede"和"abgde",结果为2。输入每组数据包括两行,每行为一个字符串。输出输出最长的公共连续子串的长度。样例输入Copyabedeabgde样例输出 Copy2...

2021-06-26 00:50:40 274

原创 最长公共子序列问题(LCS)之动态规划法

题目描述使用动态规划算法求解两个序列的最长公共子序列的长度。输入每组输入包括两行,每行包括一个字符串。输出两个序列的最长公共子序列的长度。样例输入CopyACBCDABDABDCABA样例输出 Copy5#include<stdio.h>#include<string.h>#include <stdlib.h>int c[105][105];void lcsLength(int m,int n,char x[],c.

2021-06-26 00:48:58 327

原创 最长公共子序列问题(LCS)之备忘录法

题目描述使用备忘录法求解两个序列的最长公共子序列的长度。输入每组输入包括两行,每行包括一个字符串。输出两个序列的最长公共子序列的长度。样例输入CopyACBCDABDABDCABA样例输出 Copy5#include <iostream>#include<string.h>#include <stdio.h>using namespace std;int c[1...

2021-06-26 00:47:07 1417

原创 最长递增子序列

题目描述给出一个序列a1,a2,a3,a4,a5,a6,a7...an,求它的一个子序列(设为s1,s2,...sn),使得这个子序列满足这样的性质:s1输入每组输入包括两行,第一行为序列长度n,第二行为序列。输出输出最长递增子序列的长度。样例输入Copy71 7 3 5 9 4 8样例输出 Copy4...

2021-06-24 21:44:25 114

原创 滚球游戏(动态规划)

某滚球游戏规则如下:球从入口处(第一层)开始向下滚动,每次可向下滚动一层,直到滚至最下面一层为止。球每次可滚至左下、下方或右下三个方格中的任意一个,每个方格都有一个得分,如样例所示。第1层有1个方格,第2层有3个方格,……,以此类推,第n层有2*n-1个方格。设计一个算法,使得球从入口滚至最下面一层的总得分和最大。输入对于每个样例,第1行的正整数n表示数字三角形的行数。(n<=100)接下来n行包含一个数字三角形,每一行包含2*n-1个方格,对应有2*n-1个表示得分的正整数(不超过10^.

2021-06-24 14:36:38 964

原创 数字三角形之动态规划法

如下图所示的数字三角形,从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。编写一个程序求出最佳路径上的数字之和。 【使用动态规划法实现】 7 3 8 8 1 2 2 7 4 44 5 2 6 5输入多组样例输入,每组第一行输入三角形的层数n,接下来n行输入三角形。输出输出最佳路径上的数字之...

2021-06-24 14:32:13 317

原创 二分搜索(递归)

题目描述使用递归算法,实现二分搜索。输入多组数据输入,每组第一个数字为数组的长度n,然后输入n个整数,最后输入待查询的值。输出输出待查询值所在的位置,如果没有找到,则返回-1。样例输入Copy3 1 2 3 24 0 1 3 4 2 样例输出 Copy2-1#include <iostream>#include<stdio.h>#include<string.h>int solve(int key,int a[].

2021-06-23 11:15:59 423

原创 幸运人士-

题目描述一次大型派对的最后节目是选出一位幸运人士,该人士将获得派对组织者准备的一个钻石戒指。而选择幸运人士的办法是让所有人员一字排列,然后从左至右点数,凡是奇数号的全部剔除。对于剩下的人员,又从左至右点数,逢奇数号就剔除。如此不断递归下去,直到只剩下一个人为止,此人即为幸运之人。请设计一个递归算法计算幸运之人所在的位置。输入多组数据,每组输入一个正整数n。输出输出最后剩下的那个人的位置。样例输入Copy123样例输出 Copy122#...

2021-06-22 16:58:05 147

原创 数的划分--

题目描述使用递归编写一个程序,求一个正整数n的所有划分个数。例如,输入3,输出3;输入4,输出5。输入多组输入,每一组是一个正整数n。输出输出划分数。样例输入Copy34样例输出 Copy35#include <stdio.h>#include <stdlib.h>long long int q(int n,int m){ if((n==1)||(m==1)){ return 1; }el...

2021-06-22 16:51:22 232

原创 字母全排列

编写一个程序,使用递归算法输出一个一维字符数组中所有字符的全排列,假设字符都不一样。例如{'a','b','c'}的全排列为(a,b,c), (a,c,b), (b,a,c), (b,c,a), (c,a,b), (c,b,a)输入多组测试用例,每组输入一个正整数n(0<n<=26)。输出输出从a开始,连续n个字母的全排列,且每组输出之间用空格隔开。样例输入Copy12样例输出 Copyaabba#include <stdio.h>.

2021-06-22 16:11:30 333

原创 汉诺塔II

用1,2,...,n表示n个盘子,称为1号盘,2号盘,...。号数大盘子就大。经典的汉诺塔问题经常作为一个递归的经典例题存在。可能有人并不知道汉诺塔问题的典故。汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。我们知道最少需要移动2^64-1次.在移动过程中发现,有的圆盘移动次数多,有的少 。 告之盘子总数和盘

2021-06-22 15:29:47 367

原创 汉诺塔--使用递归编写一个程序实现汉诺塔问题,要求在输入圆盘数量之后,输出圆盘的移动步骤,输出格式示例如下: 第1步:1号盘从A柱移至B柱 第2步:2号盘从A柱移至C柱

输入多组测试用例,每组输入一个正整数n,n代表圆盘数量。输出每组输出之间有一行空行。样例输入Copy3样例输出 Copy第1步:1号盘从A柱移至C柱第2步:2号盘从A柱移至B柱第3步:1号盘从C柱移至B柱第4步:3号盘从A柱移至C柱第5步:1号盘从B柱移至A柱第6步:2号盘从B柱移至C柱第7步:1号盘从A柱移至C柱#include <stdio.h>int step;void move(long long int n,char a,c..

2021-06-22 15:25:59 2714 1

原创 递归计数--编写一个递归程序,返回一个字符串中大写字母的数目。例如,输入“AbcD”,输出2。

输入多组输入,每组包括一个仅由大小写字母组成的字符串。输出输出字符串中出现大写字母的数目。样例输入CopyAbcD样例输出 Copy2#include <iostream>#include<stdio.h>#include<string.h>char a[1000];int count=0;void solve(int n){ if(n>=0){ if(a[n-1]>='A'&&a[n.

2021-06-21 21:58:48 554

原创 倒序输出--使用递归编写一个程序,逆序输出一个非负整数。例如输入1234,输出4321(不含前导0)

输入:多组输入,每组输入一个非负整数输出:逆序输出结果,每个结果占一行。样例输入Copy1212300样例输出 Copy213210本题采用了间接的调用递归,重要的是如何处理尾数为0的数,并且要保证每次处理完尾数为0的数之后还要检查是否尾数仍为0.#include <stdio.h>int fun( int n){ printf("%d",n%10); if((n/10)!=0){ return fun(n/1.

2021-06-21 21:19:04 3228

原创 递归求和-使用递归编写一个程序,求: S(n)=1-1/2+1/3-1/4+1/5-1/6+......

#include <stdio.h>double fun(int n){ double s=1; if(n>1){ if(n%2!=0){ s=1.0/n+fun(n-1); }else if(n%2==0){ s=1.0/n*(-1)+fun(n-1); } } return s;}int main(){ int n; while(~ scanf("%d",&n)){ .

2021-06-21 20:33:13 2603

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除