
算法设计与分析
wxiaojia
这个作者很懒,什么都没留下…
展开
-
0/1背包问题 c++
#include#define M 20using namespace std;int w[M],p[M],bestx[M],x[M]; //x[]暂存int n,bestP=0; //表示当前背包获得的最大价值int C;//将单位重量的物品按降序排void sort(int n){int flag,index;for(int i=1;iindex=i;原创 2017-05-24 21:10:23 · 767 阅读 · 0 评论 -
俄式乘法
description俄式乘法:又被称为俄国农夫法,其实就是两个数相乘,变相的算法。思路:假设偶两个数n,mdescription俄式乘法,又被称为俄国农夫法,它是对两个正整数相乘的非主流算法。假设m和n是两个正整数,我们要计算它们的积。它的主要原理如下:①if n%2 等于1,则总数加m,否则m加倍,n折半向上取整②重复①至n等于1,得到的总数就是两个数的乘积。 该算法只包括折半,加倍,原创 2017-04-25 20:41:11 · 6162 阅读 · 0 评论 -
最大字段和问题 用动态规划法求解
序列(-20,11,-4,13,-5,-12)动态规划法求解最大子段和问题的关键是要确定动态规划函数。aj的j为下标b(j)=b(j-1)+aj b(j-1)>0b(j)=aj b(j-1)#includeusing namespace std;#define M 100int maxadd(int s[],int n){int max[M];原创 2017-04-25 21:18:59 · 2711 阅读 · 0 评论 -
哈夫曼数 c++
#include#includeusing namespace std;#define M 100/*weight:该结点的权值。lchild:该结点的左孩子结点在数组中的下标。rchild:该结点的右孩子结点在数组中的下标。parent:该结点的双亲结点在数组中的下标。*/struct element{double weight;int lchil原创 2017-05-16 22:50:26 · 318 阅读 · 0 评论 -
回溯法求和 算法设计
#includeusing namespace std;#define M 100void main(){ int x[M],Y[M]; int n,y,sum=0,k=0; cout<<"请输入数组x的个数:"; cin>>n; for(int i=0;i<n;i++){ cout<<"x"<<(i+1)<<": "; cin>>x[i]; }原创 2017-06-19 19:01:43 · 523 阅读 · 0 评论 -
快速排序
:流程:1. 随机选取数组中的一个数index,将这个数放到最后;2. 其他数字跟这个数进行比较,也记录这个数是第几小的数,将比它小的往左,大的往右;3. 根据这个记录第几小将该数放在其对应位置,即左边比它小,右边比它大4. 这时候将左边的数和右边的数再递归上面的过程一:不需要辅助空间。//交换元素 function swap(data,a,b){ var temp=原创 2018-03-24 14:18:58 · 148 阅读 · 0 评论 -
(腾讯编程题)构造回文--js 动态规划
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1:abcdagoogle输出例子1:22思路:保存字符串并保存该字符串的反转字符串,然后用最...原创 2018-05-20 11:35:25 · 431 阅读 · 0 评论 -
(腾讯编程题)字符移位--js
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗?输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000输出描述:对于每组数据,输出移位后的字符串。输入例子1:AkleBiCeilD输出例子1:kleieilABCD...原创 2018-05-20 12:25:42 · 973 阅读 · 0 评论