编程之美实现代码
qq120848369
这个作者很懒,什么都没留下…
展开
-
编程之美:数"1"的个数,培养数学功底.
public class Count1Integer { /** * @param args */ public long count1Integer(int n){ long count=0; int lowerNum=0; int higherNum=0; int currNum=0; int factor=1; while(n/fa原创 2010-05-10 22:20:00 · 970 阅读 · 0 评论 -
区间覆盖判断;二分查找思想;归并思想;排序思想;
#include #include typedef struct{ int x,y;}Part;int main(){ int n; Part source; Part *obj; scanf("%d",&n); scanf("%d%d",&source.x,&source.y); obj=(Pa原创 2010-05-28 10:56:00 · 1047 阅读 · 0 评论 -
【动态规划:防卫导弹】:离散化+DP;15ms;
防卫导弹时限:1000ms 内存限制:10000K 总时限:3000ms描述:一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截击导弹时所处高度低或者高度相同的导弹。现对这种新型防卫导弹进行测试,在每一次测试中,发射一系列的测试导弹(这些导弹发原创 2010-05-19 10:34:00 · 1096 阅读 · 0 评论 -
二进制哈希法;
#include #include using namespace std;#define ONE32 0x00000001unsigned int flag[100]={0};// 字符串标记数组int pos=0;int main(){ while(true) { string str; cin>>str; unsigned int原创 2010-05-15 18:29:00 · 1951 阅读 · 1 评论 -
根据先序与中序遍历序列重构二叉树;
#include #include #include #include struct Node{ Node *pLeft; Node *pRight; char ch;};char str1[100];char str2[100];int findRoot(int m,int n,int rootCh){ for(int i=m;原创 2010-05-15 16:48:00 · 987 阅读 · 0 评论 -
位运算;求非成对元素;
直接把基础思想讲出来了,问题是:一个整数数组,除了1个数外,其他数都是成对出现的.例如: 2 2 1 3 3 ,1是独立出现的数字. 问题就是找出这个独立出现的数字是什么?方法是对所有整数异或运算,例如2^2^1^3^3, 因为相同的数异或后为0,所以成对的数字都异或后都为0.又由于0^n=n,所以所有整数异或后的结果就是这个单独的数字, 这个例子最后一步是0^1=1,所以1是原创 2010-05-13 22:41:00 · 708 阅读 · 0 评论 -
饮料问题;动态规划;贪心没看懂;
#include using namespace std;#define MIN -99999void print(int **path,int space[],int v,int i,int n){ if(i==n+1) { return; } cout<<path[v][i]<<endl; print(path,space,v-path[v][原创 2010-05-13 16:19:00 · 892 阅读 · 0 评论 -
CPU占用率保持50;
#include #includeusing namespace std;int busyTime=10;int idleTime=busyTime;int main(){ while(true) { __int64 startTime=GetTickCount(); while(GetTickCount()-startTime<=idleTim原创 2010-05-13 19:35:00 · 718 阅读 · 0 评论 -
中国象棋将帅问题; 伟大的位运算; 终于开窍了。。。
#include using namespace std;#define byte unsigned char#define FULL 255byte getLeft(byte num){ return num>>4;}void setLeft(byte &num,byte left){ num=num&(FULL>>4)|(left<<4);原创 2010-05-11 20:19:00 · 903 阅读 · 0 评论 -
腾讯面试题;还是用位运算的;用位存储40亿个40亿以内的整数..;
#include using namespace std;typedef unsigned int Bit32; //能表示42亿+的无符号整数const Bit32 maxLen=125000001; //数组长度,0-40亿const Bit32 thirtytwo=32;void createArray(Bit32 *&arr){ arr=new B原创 2010-05-12 22:36:00 · 1156 阅读 · 1 评论 -
还是二进制的技巧问题;简单记录一下;
一个整数除以2相当于把二进制串右移1位,这个很明显....因为本来是20+21+22+23+24这么一个整数,你一旦除以2,相当于给整体提出一个2, 就相当于原来的二进制串右移一位. 判断一个1.........N内,有多少能被m整除的个数,等于N/m....... 还有, 判断一个数是否是奇数,根据第1位是0是1就可以了 判断一个数是2的方幂,n>0 && (n&(n原创 2010-05-12 20:48:00 · 740 阅读 · 0 评论 -
子数组的最大乘积; 3种算法,2个代码;
题目描述:给定一个长度N数组,取N-1个数作乘积,找出最大值. 算法一: 枚举每一个不在N-1内的数,分别计算剩余N-1个数的乘积, 由于有N种情况,没种情况遍历计算乘积,所以n2. 算法二:假设第i位不在N-1内,那么需要左边的乘积乘以右边的乘积. 为了优化时间,做预处理,先算出i位左边的乘积与右边的乘积. 这个过程需要2 *n的时间,是线性的。 计算Max原创 2010-05-12 18:46:00 · 1621 阅读 · 0 评论 -
求二维平面最近点对算法; 分治思想; 递归写的好精准,模仿ACM模板写的.;很多细节处理的很漂亮;
<br />#include <stdlib.h>#include <stdio.h>#include <string.h>#include <math.h>const int N=100005;const double MAX= 10e100,eps=0.00001; //mark!struct Point{ double x,y; int index;};Point a[N],b[N],c[N];double closest(Point *原创 2010-06-04 11:07:00 · 1845 阅读 · 1 评论