摘要: 整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 0),只有一种划分即{1}; (2) 当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,...,1}; (3) 当n=m时,根据划分中是否包含n,可以分为两种情况: (a). 划分中包含n的情况,只有一个即{n}; (b). 划分中不包含n的情况,这时划分中最大的数字也一定比n小,即n的所有(n-1)划分。 因此 f(n,n) =1 + f(n,n-1); (4) 当nm时,根据划分中是 阅读全文
posted @ 2013-10-26 19:55 alexeyqian 阅读(247) 评论(0) 推荐(0) 编辑
摘要: int factorial(int n){ int i, result; for(i = 1; i <= n; i++) result *= i; return result;}int factorial2(int n){ if(n <= 1) return 1; else return n * factorial2(n-1);}以下列出0至20的阶乘:0!=1,注意(0的阶乘是存在的)1!=1,2!=2,3!=6,4!=24,5!=120,6!=720,7!=5,040,8!=40,3209!=362,88010!=3,... 阅读全文
posted @ 2013-10-26 19:28 alexeyqian 阅读(508) 评论(0) 推荐(0) 编辑
摘要: Three methods to check is prime, the later, the better.#include #include int isPrime(int n){ int i; for( i = 2; i < n; i++) if(n % i == 0) return 0; return 1;}int isPrime2(int n){ int i; for( i = 2; i <= sqrt(n); i++) if(n % i == 0) return 0; ret... 阅读全文
posted @ 2013-10-26 19:11 alexeyqian 阅读(126) 评论(0) 推荐(0) 编辑
摘要: Quick Sortingint quickSortPartition(int a[], int low, int high){ int i = low, j = high, key = a[low]; while(i key) j--; if(i<j) a[j] = a[i]; while(i<j && a[i] < key) i++; if(i<j) a[i] = a[j]; } a[i] = key; return i;}voi... 阅读全文
posted @ 2013-10-26 12:02 alexeyqian 阅读(123) 评论(0) 推荐(0) 编辑
摘要: Bubble Sortingvoid bubbleSort(int a[], int n){ int i, j, flag; for(i = 0; i a [j+1]) swap(a[j], a[j+1]); if(!flag) break; }}O(n^2) 阅读全文
posted @ 2013-10-26 11:12 alexeyqian 阅读(94) 评论(0) 推荐(0) 编辑
摘要: Binary Searchint binarySearch(int a[], int n, int key){ int low = 0, high = n - 1, mid = 0; while(low <= high) { mid = (low + high) / 2; if(a[mid] == key) return mid; else if(a[mid] < key) low = mid + 1; else high = mid - 1; } ... 阅读全文
posted @ 2013-10-26 09:43 alexeyqian 阅读(113) 评论(0) 推荐(0) 编辑
摘要: Insert Sortingvoid insertSort(int a[], int n){ int i = 0, j = 0, temp = 0; for(i = 1; i = 0) a[j+1] = a[j--]; a[j+1] = temp; }}O(n^2) 阅读全文
posted @ 2013-10-26 09:34 alexeyqian 阅读(118) 评论(0) 推荐(0) 编辑
摘要: Select Sortingvoid selectSort(int a[], int n){ int i = 0, j = 0, min= 0, temp = 0; for(i = 0; i a[j]) min = j; } if(min != i) swap(a[min], a[i]); } }O(n^2) 阅读全文
posted @ 2013-10-26 09:26 alexeyqian 阅读(106) 评论(0) 推荐(0) 编辑