自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

D_R的博客

要啥自行车?

  • 博客(13)
  • 收藏
  • 关注

原创 最长上升子序列(动态规划)

1 7 3 5 9 4 8 找上升子序列(1,7,9),(1,3,4,8)·········,最大为4#include<iostream>#include<algorithm>using namespace std;const int Max = 1010;int nums[Max];int maxLen[Max];int main(){ int n; cin >

2017-05-13 10:35:02 319

原创 数字三角形(动态规划)

//运用全递归的话,那样造成大量的重复计算,时间复杂度为2的n次方,太大了//递归如下#include<iostream>#include<algorithm>using namespace std;#define MAX 101int n;int nums[MAX][MAX];//定义两个二维数组int maxsum(int i,int j){ if (i==n)//如

2017-05-11 13:30:38 641

原创 爬楼梯问题

//一次只能爬1或2个台阶 //n个台阶有多少个爬法? //第一步,我们可能走1个台阶,那么剩下的就剩下了 f(n-1)中方法,或者第一步走两个台阶,那么那么剩下的就剩下了 f(n-2)种方法,所以f(n)共有 f(n-1)+ f(n-2)中方法 //在写出边界条件,n=1或者n=0,就一种结果 //这个和Fibonacci//先考虑第一步,在考虑第二步,第二步可能与第一部的解法思路相同,(

2017-05-09 17:54:36 438

原创 逆波兰表达式递归

逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构和

2017-05-09 16:59:12 3020

原创 在一个字符串中删除在另一个字符串中出现的字符

题目:两个字符串A、B,从A中剔除存在于B中的字符。比如A=“hello world”,B=”er”,那么剔除之后A变为”hllowold”。空间复杂度要求是O(1),时间复杂度越优越好。思路:hash+双指针。 对需要剔除的字符串做hash处理,查询复杂度为O(1), 字符总数为128, 所以空间复杂度为O(1). 双指针用于对对初始串的替换,在O(n)时间内完成替换,方法是设置两个指针:

2017-05-09 16:51:30 2511

原创 八/N皇后问题的详解

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。#include<iostream>using namespace std;int Queenarr[101];//这个数组是为了存放皇后的位置,索引为行号,in

2017-05-08 23:49:30 687

原创 汉诺卡Hanoi问题详解

有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。#include<iostream>using namespace std;//例如有N和盘子在A柱子上,要移到C上,B是中转站作用。//分解简化一下问题,//① 我

2017-05-08 19:53:31 681

原创 合并排序(归并排序)的递归和非递归

输入:先输入进行合并排序元素的个数,然后依次随机输入(或随机生成)每个数字。 输出:元素排序后的结果,数字之间不加任何标识符。 示例:输入:8 11 1 2 4 8 6 15 8,输出:1 2 4 6 8 8 11 15#include<iostream>using namespace std;//合并排序/归并排序template<typename T>v

2017-05-03 21:31:17 1169

原创 数组中插入元素(C++)

用静态数组太麻烦,动态的相对来说跟方便int main(){ vector <int >num(6,9);//产生6个9 for (int i = 0; i < num.size(); i++) { cout << num[i] << " "; } cout << endl; vector<int>::iterator it;

2017-05-02 16:00:37 22339

原创 快速排序的递归实现算法。

输入:先输入进行排序元素的个数,然后依次随机输入(或随机生成)每个数字。 输出:元素排序后的结果。 示例:输入:8 9 1 2 4 8 6 15 8,输出:1 2 4 6 8 8 9 15/*#include<iostream>using namespace std;void QuickSort(int arr[],int l,int r){ if (

2017-05-01 21:33:59 5234

原创 菲波拉契数列Fibonacci递归和非递归

1.写出菲波拉契数列自底向上的非递归动态规划算法或自顶向下的递归动态规划算法(备忘录方法)。 输入:输入一个数字。 输出:输出为Fibonacci数列的值。 示例:输入:5 ,输出:8Fibonacci数列可以递归地定义为: #include<iostream>using namespace std;int Fibonacci(int n)//递归{ if (n==0||n=

2017-05-01 20:55:05 2455

原创 整数划分的递归实现算法

输入:输入整数划分的整数(只输入一次,即n==m)。 输出:输入整数的划分个数值。 示例:输入:7,输出:15q(n,m)的如下递归关系定义如下: 正整数n的划分数p(n)=q(n,n)。 #include <iostream> using namespace std;int q(int n,int m){ if (n==1||m==1) { retur

2017-05-01 01:14:26 1037

原创 二分查找的递归和非递归实现

输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。 输出:要求搜索元素的下标(下标从0开始!)。 示例:输入:6 1 5 5 6 9 9 6,输出3#include <iostream> using namespace std;int search(int arr[],int l,int r,int key){

2017-05-01 01:02:08 294

空空如也

空空如也

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

TA关注的人

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