算法
passeddust
这个作者很懒,什么都没留下…
展开
-
支持正负数的大数乘法
[code="c"]#include #include #define N 1000//最大1000位int input(char n[]){ char s[N],temp; int i,j,positive; scanf("%s",s); j=strlen(s); for(i=0;i2012-04-23 15:18:45 · 103 阅读 · 0 评论 -
字符串的模式匹配算法
[code="c"]#include#define N1 11#define N2 6void kmp(char *p,char *q,int *next);void basicIndex(char *p,char *q){ int i=0,j=0,pos; while(i2012-04-22 11:45:04 · 145 阅读 · 0 评论 -
各种排序算法
[code="c"]#include #define N 5//从小到大void bubbleSort(int p[]){ int i=0,j=0,min=0; for(i=0;ii;j--){ if(p[j]2012-04-21 23:00:55 · 95 阅读 · 0 评论 -
各种复杂度求子数组的最大和
[code="c"]#include #define N 6void maxSubArray(int a[]);void maxSubArray2(int a[]);void maxSubArray3(int a[]);void main(){ int a[]={1,2,-4,4,-4,7}; maxSubArray2(a);}//O(n),这种方法能不能求...2012-04-21 22:55:57 · 87 阅读 · 0 评论 -
找出数组中两个只出现一次的数字
转载,原文地址[url]http://blog.csdn.net/tulun/article/details/6792860[/url]一个整型数组里除了两个数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是o(n),空间复杂度是o(1)。要求:首先阐述主要思路,然后编写代码实现。(盛大笔试题)考虑过程:首先我们考虑这个问题的...原创 2012-06-13 21:50:32 · 113 阅读 · 0 评论 -
随机数范围扩展方法总结
转载,原文地址[url]http://blog.csdn.net/hackbuteer1/article/details/7486704[/url]题目:已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设...原创 2012-06-13 21:04:37 · 172 阅读 · 0 评论 -
求链表倒数第k个结点
题目描述: 输入一个单向链表,输出该链表中倒数第k个结点, 链表的倒数第0个结点为链表的尾指针。第一反应是先遍历一遍链表,获得产度l,再遍历链表至l-k处,得到需求节点,这种做法不是最优应该设置两个指针p、q,让p和q之间相距k个节点,然后让p、q同步向链表后走至链表尾节点,此时p指向的就是倒数第k个节点。[code="c"]struct Node{ char data; No...2012-06-12 21:17:43 · 113 阅读 · 0 评论 -
求亲和数算法
转载自[url]http://blog.csdn.net/v_JULY_v/article/details/6441279[/url]题目描述: 求10000以内的所有亲和数 如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。 例如220和284,1184和1210,2620和2924。[code="c"] //求解亲和数问题 ...原创 2012-06-11 19:18:21 · 1424 阅读 · 0 评论 -
2011年搜狗在线测评笔试题
根据encode方法写出对应的decode方法。最后运行程序输出的结果就是要求的答案在iteye上早有人讨论过这题了,写下来给自己备忘下。解题思路是按照encode的顺序去decode如对byte a进行了3次加密操作1.^seed2.>>>53.&0x7对byte b进行了4次加密1.>144.&0xf8所以在解密时候,对a也要进行3次解密,对b进行4...2012-06-08 11:08:30 · 131 阅读 · 0 评论 -
n阶Hanoi塔问题
[code="c"]int c=0;void move(char x,int n,char z){ printf("%d. Move disk %d from %c to %c \n",++c,n,x,z);}void hanoi(int n,char x,char y,char z){ if(n==1) move(x,1,z);//将编号1的圆盘从x移到z el...2012-05-17 16:58:33 · 145 阅读 · 0 评论 -
C语言位运算--将整数转换成二进制串以及反转整数后N位
[code="c"]// c primer plus上的内容,位运算#include char * itobs (int n,char * ps);void show_bstr(const char *);int invert_end(int num,int bits);int main(void){ char bin_str[8*sizeof(int)+1]; i...2012-05-13 19:49:47 · 462 阅读 · 0 评论 -
单向扫描快排,双向扫描快排与非递归快排
[code="java"]import java.util.Stack;public class QuickSort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int unsort[]={4,3,...原创 2012-05-12 22:22:07 · 524 阅读 · 0 评论 -
C语言栈的简易实现,包含O(1)时间复杂度的min方法
[code="c"]#include#include#include#include//定义栈的初始分配空间#define STACK_INIT_SIZE 100//栈的分配增量#define STACKINCRENMENT 10typedef struct{ char *top;//栈顶 char *base;//栈底 char min;...2012-05-12 21:44:53 · 246 阅读 · 0 评论 -
两个单向链表的第一个公共结点
转载,原文[url]http://blog.csdn.net/wcyoot/article/details/6426436[/url]题目:两个单向链表,找出它们的第一个公共结点。如果两个单向链表有公共的结点,也就是说两个链表从某一结点开始,它们的m_pNext都指向同一个结点。但由于是单向链表的结点,每个结点只有一个m_pNext,因此从第一个公共结点开始,之后它们所有结点都是重合的,不...原创 2012-05-08 20:33:07 · 95 阅读 · 0 评论 -
空间复杂度O(1)的归并问题
最近百度实习生笔试题里考了这个,要求归并算法里空间复杂度为O(1),不能设置辅助数组[code="c"]# include # define N 10int binarySearch(int m,int* unsort ,int low,int high){ int mid; while(lowm) high=mid-1; else if(unsort[m...2012-05-08 17:29:39 · 254 阅读 · 0 评论 -
字符串最大公共子序列以及最大公共子串问题
最大公共子序列[code="java"]import java.util.Random;public class LCS { public static void main(String[] args){ //设置字符串长度 int substringLength1 = 20; int substringLength2 = ...2012-05-08 15:30:56 · 138 阅读 · 0 评论 -
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来...
转载的文章,原链接[url]http://www.cnblogs.com/pippo0725/articles/2046366.html[/url][code="c"]#include using namespace std;int length;void PrintSolutions(int *flag) { for (int i=0; i...原创 2012-05-02 13:51:43 · 172 阅读 · 0 评论 -
数组最大上升子序列解法
[code="c"]#include #define N 9//O(nlogn)/**该方法可求最大上升子序列同时,可求最大不下降子序列如{2,1,1,4}这种连续两个元素相等的序列,最大不下降子序列为{1,1,4}*/void lis1(int *a){ int i,j=0,temp,b[N],low,mid,high; b[0]=a[0]; for(i=...2012-04-24 15:53:16 · 201 阅读 · 0 评论 -
将字符串输出为整数
[code="c"]#include #include #include void main(){ char *p="-0003123123sdadda123s2"; int *q,i=0,k=0,j=0,len; if(p[0]!='-'){ j=0; }else{ j=1; } len=strlen(p); q=(int *)malloc(s...2012-04-22 22:41:03 · 201 阅读 · 0 评论