摘要: 1.Searching an Element in a Rotated Sorted Arrayint r_binary_search(int arr[], int size, int key){ int left = 0; int right = size - 1; int mid; while(left <= right) { mid = (left + right)/2; if(arr[mid] == key) return mid; if(arr[mid] >= arr[left]) ... 阅读全文
posted @ 2011-12-14 17:33 Sw_R 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 资料:http://blog.csdn.net/liuben/article/details/50506971. 简单的方法:unsigned int simple_hash(char *str) { register unsigned int hash; register unsigned char *p; for(hash = 0, p = (unsigned char *)str; *p ; p++) hash = 31 * hash + *p; return (hash & 0x7FFFFFFF); } 阅读全文
posted @ 2011-12-10 14:13 Sw_R 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1. 有没有可能写出自我进化的程序?2. 有没有可能模拟细胞分裂来实现程序的功能? 一段DNA代码控制程序的分裂来实现一个功能? 阅读全文
posted @ 2011-11-24 15:38 Sw_R 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 1. 留着研究研究 - 用 reservoir sampling 方法实现,参考:http://gregable.com/2007/10/reservoir-sampling.html 阅读全文
posted @ 2011-11-14 06:35 Sw_R 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1. Quicksort (快速排序)最简单实现:int partition(int a[], int start, int end){ int pivot = a[start]; int i = start; int j = start + 1; while(j <= end) { if(pivot > a[j]) { swap(a[++i], a[j++]); } else { j++; } } swap(a[start], a[i]); return i;}void quick_sort(int a[], int start, int end){ if(start >. 阅读全文
posted @ 2011-11-09 09:49 Sw_R 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 1. 2 sum2. 3 sum3. Pythagorean tripleFind a Pythagorean triplet from an array. c^2 = a^2 + b^2.void pt(int arr[], int size){ for(int i=0; i<size; i++) arr[i] *= arr[i]; for(int k=size-1; k>=2; k--) { for(int l=0, r=k-1; l<r;) { if(arr[k] == arr[l] + arr[r]) { cout<<arr[k]<<" 阅读全文
posted @ 2011-11-09 03:26 Sw_R 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 1. 使用二维向量存当前长度。string lcs(const string &s, const string &t){ const int slen = s.length(); const int tlen = t.length(); vector<vector<int>> arr(slen, vector<int>(tlen, 0)); string lcs; int maxlen = 0; for(int i=0; i<slen; i++) { for(int j=0; j<tlen; j++) { if(s[i] == t 阅读全文
posted @ 2011-11-08 09:33 Sw_R 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1. 这里有好多种方法~ :http://www.codeproject.com/KB/cpp/Sqrt_Prec_VS_Speed.aspx2. 一个用神奇的数 -0x5f3759df 来求平方根的方法!可惜还没看明白。。float SquareRoot(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); // mag... 阅读全文
posted @ 2011-11-07 10:34 Sw_R 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 我的方法是先输出最外边的矩形然后用递归进入里面的矩形----void spiral_print(int a[][5], int startX, int startY, int endX, int endY){ if(startX>endX || startY>endY) return; else if(startX==endX && startY==endY) { cout<<a[startY][startX]<<endl; return; } for(int i=startX; i<endX; i++) cout<<a[s 阅读全文
posted @ 2011-11-01 03:53 Sw_R 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 1. reverse a stack with recursionvoid reverse_push(stack<int> &stk, int x){ if(stk.empty()) { stk.push(x); return; } int temp = stk.top(); stk.pop(); reverse_push(stk, x); stk.push (temp);}void reverse(stack<int>& stk){ if(stk.empty()) { cout<<"aaa"<<endl; r 阅读全文
posted @ 2011-10-24 13:48 Sw_R 阅读(312) 评论(0) 推荐(0) 编辑