算法
ykhappiness
这个作者很懒,什么都没留下…
展开
-
快速排序
/*快速排序:选取第一个记录为关键字K1,将小于关键字的记录移到关键字前将大于关键字的记录移到关键字后*/# include using namespace std;/*一趟快速排序*/int QKPass(int r[],int left,int right){ int x = r[left]; int low = left; int high =原创 2012-06-05 17:38:16 · 244 阅读 · 0 评论 -
Java八皇后
package queen;import java.awt.*;import java.awt.event.*;@SuppressWarnings("serial")class equeen extends Frame implements ActionListener { // 构造界面和定义数组 Button enter; Button clean; Butto转载 2012-09-12 11:02:26 · 429 阅读 · 0 评论 -
朴素模式匹配(BF)
public class BF_Match {public static int match1(String txt,String pat,int offset[]){int i,j,c=0;char[] txt2=txt.toCharArray();char[] pat2=pat.toCharArray();int m = txt2.length;int n = pat2原创 2012-09-29 16:50:14 · 330 阅读 · 0 评论 -
KMP模式匹配
# include # include /*求字符串的长度*/int getLength(char ch[]){int i=0;while(ch[i]!='\0'){i++;} return i;}int *Next(char ch[]){int m=getLength(ch);int *N = new int[m];N[0]=0;fo原创 2012-09-29 17:30:12 · 259 阅读 · 0 评论 -
给定N位数,去掉K位数,得到的N-K位数中最小的那个数?
import java.util.Scanner;/** *给定一个N位数,求去掉K位数后,剩下的N-K数中最小的数! *例如:12345 去掉2和4剩下135 * 去掉1和5省下234 */public class Min {public static void main(String[] args) {System.out.println("原创 2012-09-29 11:42:13 · 2496 阅读 · 0 评论 -
2路归并排序算法
/* 2路归并排序法的基本操作是将待排序列中相邻的两个有序子序列合并成一个有序序列*/# include using namespace std;void Merge(int r1[],int low,int mid,int high,int r[]){ /* r1[low..mid]和r1[mid+1...high]有序序列,将它们合并成一个有序序列原创 2012-09-13 17:15:32 · 1933 阅读 · 0 评论 -
最长可重复的重复子串(1)
/** * 最长可重叠的重复子串 * 子串和子串相互比较 * 时间复杂度是O(n^2) */public class LRS_Base { public static int comlen(int a,int b,int size,char[] arr){ int len = 0; while(b len++; a++; b++;原创 2012-10-05 18:17:54 · 299 阅读 · 0 评论 -
最长可重叠的重复子串(2)
http://www.ahathinking.com/archives/121.html文章作者:Yx.Ac 文章来源:勇幸|Thinking (http://www.ahathinking.com) 转载请注明,谢谢合作。---首先这是一个单字符串问题。子字符串R 在字符串L 中至少出现两次,则称R 是L 的重复子串。重复子串又分为可重叠重复子串和不可重叠重复子串,这里只转载 2012-10-05 18:25:29 · 622 阅读 · 0 评论 -
两个矩阵相乘
# include using namespace std;void matrixMultiply(int * *a,int * *b,int * *c,int ra,int ca,int rb,int cb){//矩阵a的行数,ra列数ca//矩阵b的行数,rb列数cbif(ca!=rb){coutexit(-1);}for(int i=0;ifor(in原创 2012-10-10 13:05:34 · 484 阅读 · 0 评论 -
有重复元素的全排列
描述输入格式第1行是元素个数n,1输出格式程序运行结束时,将计算输出n个元素的所有不同排列。最后1行中的数是排列总数。(说明:此题,所有计算出的排列原本是无所谓顺序的。但为了容易评判,输出结果必须唯一!现做约定:所有排列的输出顺序如课本P11的例2-4的程序段的输出顺序,区别仅是这道题是含重复元素。)输入样例4aacc输出样例转载 2012-10-09 22:21:21 · 981 阅读 · 0 评论 -
10个台阶,每次最多上2阶,有多少种上法?
台阶问题 记住斐波那契数列我以前总结过的 想想先。。。有10个台阶,最多一次跨2级台阶,有多少种走法?有简便的算法么?我们倒过来看:假设现在第9级台阶上,那么只有1种走法;假设现在第8级台阶上,那么有2种走法;假设7,那么有12、21、111共3种走法(因为他接下来2种可能:一是走上了第八级,另一是走上了第九级,所以1+2=3种);。。。依次类推,转载 2012-09-21 12:13:03 · 3291 阅读 · 0 评论 -
删除一个字符串中的数字(C语言)
# include #include void DropNum(char* str){int i=0;int j=0;while(str[i]!='\0'){if(str[i]>'9'||str[i]str[j++]=str[i];i++;}str[j]='\0';//字符串最后一个字符时'\0'}void main(){char ch[] =原创 2012-09-28 22:14:04 · 12948 阅读 · 3 评论 -
关于二叉树的算法集合
//BinaryTree.cpp//------------------------------------------------------------------------------------------------------------------------// 对二叉树的基本操作的类模板封装//---------------------------------转载 2012-09-28 09:08:11 · 722 阅读 · 0 评论 -
字符串模式匹配
package com.interview.demo;/** * * @author yaokai * 模式匹配 */public class MaxLength { public static void main(String[] args) { String str1 = "abcdefghefg"; String str2 = "efg"; i原创 2012-09-28 06:48:41 · 260 阅读 · 0 评论 -
全排列
/*递归算法 全排列R = {r1,r2,r3,...,rn};当n=1 Perm(R) = (r1)当n>1 Perm(R) = (r1)Perm(R1) (r2)Perm(R2) (r3)Perm(R3) ...*/# include using namespace std;int sum = 0;//交换元素位置void swap(int &a,i原创 2012-06-05 19:06:05 · 297 阅读 · 0 评论 -
冒泡排序
/*冒泡排序:从头扫描 顺序比较相邻两元素大小*/# include using namespace std;int sum = 0;//打印数组元素void printArray(int r[]){ for(int i=0;i cout cout}//交换相邻元素位置1/*void swap(int &a,int &b){原创 2012-06-05 18:10:40 · 229 阅读 · 0 评论 -
八皇后问题2
//*******************************//***程序 eightQueue.cpp ****//***作者 **** //***编制时间 ****//***主要功能 八皇后问题 ****//*******************************# incl原创 2012-06-07 14:23:40 · 258 阅读 · 0 评论 -
旅行售货员问题1
# include /* 利用全排列解决旅行售货员问题(最短路程或最少旅费)*/int cost[5][5]={{0,0,0,0,0},{0,0,30,6,4},{0,30,0,5,10,},{0,6,5,0,20},{0,4,10,20,0}};double bestc = 9999;int Num = 0;int i;template void Perm(原创 2012-06-08 07:06:58 · 752 阅读 · 0 评论 -
数组的众数问题的分治解法
★问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。★编程任务:对于给定的由n个自然数组成的多重集S,编程计算S的众数及其重数。★数据输入:输入数据由文件名为input.txt的文本文件提供。文件的第1行多重集S中元素个数n;接下来的n转载 2012-06-07 08:00:38 · 1536 阅读 · 0 评论 -
最多约数问题
问题描述:正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)=4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数x。编程任务: 对于给定的2个正整数a≤b,编程计算a 和 b 之间约数个数最多的数。 数据输入: 输入数据由文件名为input.txt的文本文件提供。文转载 2012-06-07 07:50:19 · 4270 阅读 · 0 评论 -
八皇后问题1
#includeusing namespace std;#define N 8//N代表皇后数void queen(){ int j; int Count=0; //计算总共的解的数量 int column[N+1]; //column[m]=n 表示第m列,第n行放置了皇后,这里下表并从0开始 int row[N+1]; //row[m]转载 2012-06-07 08:30:50 · 371 阅读 · 0 评论 -
直接插入排序
/*直接插入排序:将第i个记录插入到前面已经排好的n-1个记录中*/# include using namespace std;//将待排数据存于r[1-n]中,r[0]作为监视哨,存放待插入的记录。监视哨的作用:备份待插入的记录,//方便关键字较大的记录后移和防止越界void InsSort(int r[],int length){ for(int i=2;i原创 2012-09-05 21:16:12 · 253 阅读 · 0 评论 -
堆排序
/*堆排序*/# include using namespace std;/*筛选算法: 首先将完全二叉树的根节点中的记录移除,该记录成为待调整记录,此时根节点相当于空节点。 从空节点的左右节点中选出一个值较大的记录,如果该记录的值大于待调整记录的值则将该记录移至空节点中 此时那个值较大的记录(子节点)相当于空节点。重复上诉过程,直到空节点的左右子节点的值均都不大于待原创 2012-09-06 09:15:35 · 231 阅读 · 0 评论 -
直接插入排序
/*待排序记录存放在r[1..n]之中为了提高效率附设监视哨r[0]*/#include using namespace std;void InsSort(int r[],int length){ for(int i=2;i r[0] = r[i]; int j = i-1; while(r[0] r[j+1]=r[j]; j=j-1;原创 2012-09-10 17:42:04 · 183 阅读 · 0 评论 -
随机产生100个数,随机选择98个数存入一个数组,求那两个没有存入数组?
package com.interview.demo;/** * * @author yaokai * 1-10共10个自然数,随机选择8个存入数组b * 求那两个没有被放入 */public class WhiltCat{public static void main(String[] args){int[] b = new int[]{1,2,3,4,6,原创 2012-09-22 16:58:17 · 972 阅读 · 1 评论