![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
rually
这个作者很懒,什么都没留下…
展开
-
蛇行矩阵的解法
题目来源: http://www.programfan.com/acm/show.asp?qid=72#comment蛇行矩阵Problem蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 Input本题有多组数据,每组数据由一个正整数N组成。(N不大于100) Output对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。原创 2013-02-17 18:22:55 · 1304 阅读 · 0 评论 -
经典排序算法的汇总之基数排序
经典排序算法的汇总之基数排序基数排序: 找到数组中重复元素 大小为n的数组,里面的数都属于范围[0, n-1]使用条件:数组有n个元素 每个数的取值范围:0~n-1 下面的代码是基数排序的应用,找出数列中是不是有重复元素 代码如下: void radixSort(int a[],int n){ int flag=0; while(!flag) {原创 2013-02-17 20:09:18 · 594 阅读 · 0 评论 -
递归求解全排列问题
递归求解全排列问题求解思想: 排列中每一个数字,都有一次当最前单一缀的机会, 例如: 排列数组 a[] 1.当a[]中只有1个数字的时候,(a[1]={a1})则只有1个数字做单一前缀和后缀,则只有一种(1!=1)可能 a1,直接输出 2.当a[]中只有2个数字的时候,(a[2]={a1,a2}) ,则a1,a2分别有一次机会做单原创 2013-02-18 18:39:42 · 2120 阅读 · 0 评论 -
小顶堆的递归构建
小顶堆的递归构建 道理很简单,顶上是最小的,比左右子树都小,在整个树上都成立。 代码如下: void swap(int &a,int &b){ if(a!=b) { int temp; temp=a; a=b; b=temp; }}void show(int *a ,int n)//显示数组{ cout<<"一共"原创 2013-02-18 19:39:18 · 1261 阅读 · 0 评论 -
回溯问题简答总结与8皇后问题的应用
回溯问题的简单总结与8皇后问题的解答原创 2014-02-01 14:38:50 · 1124 阅读 · 0 评论 -
回溯问题的解答关键和程序框架
回溯问题是建立在递归的基础上的,并在解答树的基础上使用了DFS深度优先搜寻解答方案的策略,所以解答回溯问题的关键,在于寻找结束递归的边界条件,以及每一步测试当前方案是否符合题设条件。如果符合条件,进行递归向下,进行下一步的测试,否则继续试探,如果试探都结束,仍然找不到合理的解答,则推出现在所在的递归,及返回上一个递归栈帧,修改上一栈帧的值,重新测试,掌握回溯法,关键在于掌握试探的思想。原创 2014-02-01 20:44:27 · 1053 阅读 · 0 评论 -
ZOJ -027动态规划解答方法
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1027Human Gene FunctionsTime Limit: 2 Seconds Memory Limit: 65536 KB It is well known that a human gene can be considered a原创 2014-02-04 11:31:22 · 1170 阅读 · 0 评论 -
字符数组归并排序操作
两个排序好的字符数组,归并排序依然得到有序字符数组数组char * cmp(char* s1,char* s2) { char *s= (char*)malloc(sizeof(char*)*20); char *ss=s; assert(s1); assert(s2); while(*s1!='\0'&&*s原创 2014-03-15 21:42:36 · 1174 阅读 · 0 评论 -
2014川大复试c语言
问题描述:第二题10个球装入4个篮子,第一个篮子至少1个,第二个至多5个,第三个要是偶数个,第四个随便,编程求可能的情况数void search(int i) { if(i==4&&(a[1]>=1&&(a[2]>=5)&&(a[3]%2==0)&&(a[4]=10-a[1]-a[2]-a[3])>0)) { for(int j=1;j<=4;j++)原创 2014-03-17 18:54:41 · 1815 阅读 · 0 评论 -
背包问题的动态规划解法
01背包问题具体例子:假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大? 这个问题有两种解法,动态规划和贪婪算法。本文仅涉及动态规划。 先不套用动态规划的具体定义,试着想,碰见这种题目,怎么解决? 首先想到的,一般是原创 2014-09-22 12:54:24 · 1313 阅读 · 0 评论 -
贪心算法基本思想和代码框架
贪心法的求解过程 用贪心法求解问题应该考虑如下几个方面:(1)候选集合C:为了构造问题的解决方案,有一个候选集合C作为问题的可能解,即问题的最终解均取自于候选集合C。(2)解集合S:随着贪心选择的进行,解集合S不断扩展,直到构成一个满足问题的完整解。(3)解决函数solution:检查解集合S是否构成问题的完整解。(4)选择函数select:即贪心原创 2014-09-22 13:00:09 · 5450 阅读 · 1 评论 -
经典排序算法的汇总之插入排序
经典排序算法的汇总之插入排序 插入排序 无序区并入有序曲 有序区 从最左边第一个元素开始void insertsort(int a[],int n){ int x,cnt=0; for(int i=1;i<n;i++) { x=a[i]; int j=i; while(x<a[j-1]) { a[j]=a[j-1原创 2013-02-17 20:04:15 · 495 阅读 · 0 评论 -
经典排序算法的汇总之插入排序
经典排序算法的汇总之插入排序 插入排序:选择排序 从无序区选择最小的//放到有序曲的后面void selectSort(int a[],int n) // 选择排序 从无序区选择最小的//放到有序曲end{ for(int i=0;i<n;i++) { int x=i; for(int j=i+1;j<n;j++) {原创 2013-02-17 20:02:40 · 481 阅读 · 0 评论 -
递归求解kitty猫的基因编码
题目来源: http://www.programfan.com/acm/show.asp?qid=77 题目信息 :kitty猫的基因编码Problemkitty的基因编码如下定义: kitty的基因由一串长度2^k(k<=8)的01序列构成,为了方便研究,需要把,01序列转换为ABC编码。用T(s)来表示01序列s的ABC编码 T(s)=‘A'(当S全由'0'组成) T(原创 2013-02-17 19:30:26 · 2293 阅读 · 0 评论 -
经典排序算法的汇总之快速排序
经典排序算法的汇总之快速排序快速排序核心思想:,找到一个基准, 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。void quickSort(int a[] ,int l,int r){ if(l<r){ int原创 2013-02-17 19:50:59 · 645 阅读 · 0 评论 -
经典排序算法的汇总之归并排序
经典排序算法的汇总之归并排序归并排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序 void Mymerge(int *a ,int *b ,int na,int nb){ int c[20]= {0}; int ic=0,ia=0, ib=原创 2013-02-17 19:56:35 · 595 阅读 · 0 评论 -
经典排序算法的汇总之希尔(shell)排序
经典排序算法的汇总之希尔(shell)排序 // shell排序 从开始的n/2为gap开始 ,从第一个数开始 每次加一个gap 直到加的gap //加到数组r右边 所以 每次也就是gap个分组 每个分组使用插入排序 void shellsort(int a[],int l,int r) { int n=r-l+1,x; int gap=n/2;原创 2013-02-17 19:59:10 · 528 阅读 · 0 评论 -
简单的递归求解乘方问题
递归求解乘方int pow(int base,int n,int result) //result 必须在一开始就初始化=base{ if(base==1) return 1; if(n==1) return result; if((base>1)&&(n>1)) { result*=base; return pow(base原创 2013-02-17 15:17:35 · 1252 阅读 · 0 评论 -
最小公倍数求解猪的安家
题目来源:http://www.programfan.com/acm/show.asp?qid=104#comment 猪的安家Andy和Mary养了很多猪。他们想要给猪安家。但是Andy没有足够的猪圈,很多猪只能够在一个猪圈安家。举个例子,假如有16头猪,Andy建了3个猪圈,为了保证公平,剩下1头猪就没有地方安家了。Mary生气了,骂Andy没有脑子,并让他重新建立猪圈。这回And原创 2013-02-17 18:30:47 · 873 阅读 · 0 评论 -
递归求解母牛生小牛问题
题目来源:http://www.programfan.com/acm/show.asp?qid=7#comment http://acm.tongji.edu.cn/showproblem.php?problem_id=1005 母牛生小牛原创 2013-02-17 18:40:34 · 11277 阅读 · 0 评论 -
哈希法求解百度语言翻译机
题目来源:http://www.programfan.com/acm/show.asp?qid=112#comment百度语言翻译机2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机 时限 1s 百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。原创 2013-02-17 19:01:48 · 1064 阅读 · 0 评论 -
最短路径之folyd算法
Floyd算法floyd算法采用的是(松弛技术),对在i和j之间的所有其他点进行一次松弛。 If D[i,j]>D[i,k]+D[k,j] ThenD[I,j]:=D[I,k]+D[k,j];时间复杂度:为O(n^3);算法描述: a) 初始化:D[u,v]=A[u,v]b) For k:=1 to nFor i:=1 to nFor j:=1 to原创 2013-02-17 19:14:27 · 901 阅读 · 0 评论 -
swap的异或实现办法
swap的异或实现办法 //普通的交换元素实现办法void swap(int &a,int &b){ if(a!=b) { int temp; temp=a; a=b; b=temp; }}异或运算的实现如下: //异或运算的实质:不带进位的加法void Swap1(int &a, int &b){ a ^= b;原创 2013-02-17 19:43:26 · 2120 阅读 · 0 评论 -
看论文学算法---退火算法
目标:寻找最优解思想:模拟退火其实也是一种贪心算法,由于有一定的概率会接受一个比当前解更差的解,所以可以跳出当前最优解的局部,找到全局最优解,这里的“一定的概率”的计算参考了金属冶炼的退火过程,这也是模拟退火算法名称的由来。 根据热力学的原理,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为: P(dE) = exp( dE/(kT) )原创 2015-10-13 09:58:29 · 460 阅读 · 0 评论