上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: 1. 递归法 #include <iostream>/* 整数划分问题 http://www.cnblogs.com/dolphin0520/archive/2011/04/04/2005098.html*////* f(n, m)= 1; (n=1 or m=1) f(n,m) = f(n, n); (n<m) 1+ f(n, m-1); (n=m) f(n-m,m)+f(n,m-1)... 阅读全文
posted @ 2011-08-25 15:08 wtx 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 转自: http://www.cnblogs.com/qsort/archive/2011/08/23/2150089.html1,一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。最直接也最清晰的做法就是排序然后两边往中间同步走,O(nlogn) + O(n)。 这是标准做法,如果有序序列,更好,只用O(n)就行不过既然相同数值不重复出现,还对空间没啥说的,那就bitmap吧。。。可以做到O(n)。太无聊了,还要揣摩出题人的思路。2,一个整数数列,元素取值可能是0~655 阅读全文
posted @ 2011-08-25 11:01 wtx 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 1.给出一个有N个数字(-1000..1000,N<=10^5)的环状序列,求一个和最大的连续子序列。http://www.cppblog.com/baby-fly/archive/2010/08/04/122213.aspx?Pending=true来源于单调队列的应用#include<iostream>#include<queue>using namespace std;#define INF 0x3fffffff#define maxn 100010int num[maxn],sum[maxn];int main(){ int T; int N,K,n; c 阅读全文
posted @ 2011-08-25 10:46 wtx 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 来源于:http://blog.csdn.net/lin_bei/article/details/15655751. 中位数,也是利用2分查找,去掉一半的算法,只是这个 中位数 。。。。总是求的是最小的那个,而不是平均值。。。Gray 码,使用递归分治求GRAY码硬币找零问题#include <iostream>using namespace std;int findMedian(int *a,int *b,int n){ if(n == 1) return *a <= *b ? *a: *b; int m = (n - 1) >> 1; int p = m + 阅读全文
posted @ 2011-08-25 10:03 wtx 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 来自:http://www.cnblogs.com/hlxs/archive/2011/08/24/2151828.html 1. 数组相关 在排序找出数组中的两个数,他们之和为n 2. 数组中连续的数字之和为n的所有对数 3. 输出所以字符串的排列与组合 4. 序列化分问题1. 数组相关 在排序找出数组中的两个数,他们之和为n,当然如果数组不是有序的,先排序在找时间复杂度O(nlogn + n),更简单的当然还是hash或者如果元素不重复的话位图,bloom filter更好#include <iostream>using namespace std;//在排序找出数组中... 阅读全文
posted @ 2011-08-24 21:20 wtx 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 0 整理自网络1. Java版(转) 要比较的对象必须实现Comparable接口,重写compareTo 方法,Java在红自带有优先级队列的实现PriorityQueueQueue<ToDoItem> q = new PriorityQueue<ToDoItem>();import java.util.Collections;import java.util.PriorityQueue;import java.util.Queue;public class ToDoItem implements Comparable<ToDoItem>{ private 阅读全文
posted @ 2011-08-24 20:06 wtx 阅读(1965) 评论(0) 推荐(0) 编辑
摘要: 属于转贴一、 Bloom-Filter算法简介。 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元素是否在一个集合中,其优点是空间效率和查询时间都远远超过其他算法,其不足在于Bloom- Filter存在着误判。二、 Bloom-Filter的基本思想。 Bloom-Filter算法的核心思想就是利用多个不同的Hash函数来解决“冲突”。 计算某元素x是否在一个集合中,首先能想到的方法就是将所有的已知元素保存起来构成一个集合R,然后用元素x跟这些R中的元素一一比较来判断是否存在于集合R中;我们可以采用链表等数据结构来实现。但是,随着集合R中元素的增加, 阅读全文
posted @ 2011-08-24 16:28 wtx 阅读(7570) 评论(1) 推荐(0) 编辑
摘要: 1. 反转字符串。#include <iostream>using namespace std;/** 编写反转字符串的程序,要求优化速度、优化空间。*/void reverse(char *str,int len){ char *p = str; char *q = str + len - 1; len /= 2; while(len > 0) { *p = *p ^ *q; *q = *p ^ *q; *p = *p ^ *q; p ++; q --; len --; }... 阅读全文
posted @ 2011-08-24 15:53 wtx 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 各种排序算法实现的收集,肯定有你没有见过的。归并,快排,奇偶排,cocktail 排序,梳排序,计数排序,基数排序,LSD基数排序,shell排序,桶排序,鸽巢排序等1. 归并排序的实现#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;void merage(int a[],int low,int mid,int high){ int *temp = (int *)malloc((high - low + 1 阅读全文
posted @ 2011-08-22 21:51 wtx 阅读(662) 评论(0) 推荐(0) 编辑
摘要: 1. 100万数据的产生,随机数方式#include <iostream>#include <time.h>#include <assert.h>#include <stdio.h>#include <stdlib.h>using namespace std;const int size = 10000000;int num[size];int main(){ int n; FILE *fp = fopen("data.txt", "w"); assert(fp); for (n = 1; n 阅读全文
posted @ 2011-08-20 21:50 wtx 阅读(2526) 评论(1) 推荐(1) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页