- 博客(26)
- 收藏
- 关注
转载 【编程珠玑】代码优化的27条经典法则
1. 空间换时间法则 1.1修改数据结构 例如:计算球面距离:输入为球面上5000个点组成的集合S,再输入20000个点组成的序列,每个点实用经度和纬度表示,对于20000个点的序列,程序必须求出S中哪个点最接近它,距离使用球体中心与两个点的连线之间的夹角来度量。 直接计算需要用到大量的三角函数,开销很大,而两个点的距离随其欧
2014-10-31 22:31:01 417
原创 堆排序(《编程珠玑》第14章)
下面是堆排序的代码,其中在《编程珠玑》第14章中的代码,在建堆时候用的是从下往上的上虑,而习题2也指出了从下往上的下虑的复杂度更低,能够在O(n)复杂度内完成建堆。
2014-10-31 21:58:29 611
原创 在1-9这9个数之间填上+或-,使结果等于目标值(华为机试)
题目来源:华为机试题,难题!主要思想:深搜,不多把问题简化,知道只剩下一个元素或者不剩下。也算是减而治之。
2014-10-16 11:19:14 4295
转载 整数二进制展开后1的个数(《编程珠玑》第九章)
转自博客:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html
2014-10-15 22:31:22 899
原创 数组中总和最接近t的子向量(编程珠玑《第八章》)
#include#includeusing namespace std;int nearestZero(int A[],int n){int *sum=new int[n];sum[0]=A[0];for(int i=1;isum[i]=sum[i-1]+A[i];sort(sum,sum+n);int result=sum[0]-sum[1];
2014-10-14 22:04:56 908
原创 找出数组中连续的x个数,使其和最大(《编程珠玑》第八章)
其中1的复杂度为O(n^3),2a和2b的复杂度为O(n^2),3的复杂度为O(nlogn),最后一个的复杂度是O(1).#includeusingnamespace std;int maxSeriesVector1(intA[],int n){ intmax=0,currSum=0; for(int i=0;i {
2014-10-13 21:24:50 1684
原创 x的n次方(编程珠玑第四章)
测试过的版本:考虑了n是负数的情况#includeusing namespace std;double power(double x,int n){ doubletemp=x; doubleresult=1; if(n==0) return1; if(n
2014-10-10 21:58:19 729
原创 编程珠玑第三正课后题
int main(){cout<<getPermutation1(6,78)<<endl;cout<<cantor("152643")<<endl;system("pause");return 0;}int cantor(string s){int factorial[10]={0};for(int i=1;i<10;i++)factorial[i]=calFactorial(i);string
2014-10-08 19:58:12 612
原创 日期问题函数(编程珠玑第三章)
#includeusing namespace std;int month[]={0,31,28,31,30,31,30,31,31,30,31,30,31};struct Date{int year;int month;int day;Date(int _year,int _month,int _day){year=_year;mont
2014-10-08 15:10:41 555
原创 rotate旋转分析(编程珠玑第二章)
方法1:编程#include#includeusing namespace std; void swap(int begin,int mid,intn,vectorint> &num){ for(int i=0;i swap(num[begin+i],num[mid+i]);} void rotate
2014-10-06 21:00:01 740
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人