摘要:
1. n! 当n比较大时,采用数组存放结果#include <iostream>using namespace std;#define MAX 1000//n比较小的时候void n_(int n){ int result = 1; for(int i = 2;i <= n; i ++) result *= i; cout << result << endl;}//函数功能,求n!void f(int n){ int a[MAX]; int p,h;//p 存储当前的结果的位数,h为进位 a[1] = 1; //用来存储运算结果 p = 1... 阅读全文
摘要:
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)... 阅读全文
摘要:
转自: 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 阅读全文
摘要:
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 阅读全文
摘要:
来源于: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 + 阅读全文