随笔分类 -  算法

摘要:树的面积=最长层结点个数*树的高,要求:只能用一个函数:#include#includeusing namespace std;struct Node{ int val; Node *lchild; Node *rchild;} ;//创建二叉树Node *CreateTree(){ char lflag='n',rflag='n'; Node*root=new Node; root->lchild=NULL; root->rchild=NULL; cout>root->val; coutval>lflag; if(lflag... 阅读全文
posted @ 2013-10-24 20:14 宁静致远--Ada 阅读(398) 评论(0) 推荐(0)
摘要:给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如:1101是重复数,1231是不重复数思路:1、前把这个正整数加1,保证求得的数比这个数大2、从左到右开始遍历加1后的正整数,如果前一个数字与后一个数字相同,则后一个数字需要加13、如果后一个数字为9的话,加1会进位,这时可能会引起前面已检测过的值产生重复,此时,需要重新遍历4、加1后,为保证值最小,则后面数值以10101010...填充代码://方法一,直接+1判断是否符合//但如11011011011时,效率太低int GetMin(int a){ int k,l; while(1){... 阅读全文
posted @ 2013-10-12 22:06 宁静致远--Ada 阅读(348) 评论(0) 推荐(0)
摘要:加法步骤:1、简单的按位相加,没有产生进位2、加上需要进位的值#include using namespace std;int add(int a,int b){ int sum=a^b;//不进位相加 int carry=(a&b)0) return add(sum,carry);//加上进位值 else return sum;}void main(){ cout<<add(43,23); system("pause");} 阅读全文
posted @ 2013-10-06 15:36 宁静致远--Ada 阅读(202) 评论(0) 推荐(0)
摘要:假设整数为INT型,且非负数,代码如下:注意点:GetInersection返回值应该为vector而不应该是vector& 因为vector向量对象在函数运行完后系统会自动的调用析构函数,如果返回&的话,将得到一个NULL值#include #include #include #includeusing namespace std;//求集合a和集合b的交集vector GetIntersection(seta,setb){ bitset bs(0);//创建一个位数组来存储a中存在的数 vectorc;//创建向量来存储交集中的元素 //把a中存在的数值作为c的下标,标记. 阅读全文
posted @ 2013-10-03 15:19 宁静致远--Ada 阅读(660) 评论(0) 推荐(0)
摘要:腾讯的二面过了好久了,可很遗憾还是没有过...但还是把面经写出来吧!一是再过几天我真的什么都忘了,要常总结,攒人品;二是也许可以为后来者提供点帮助原本以为二面一般会问一些项目上的知识,前一个晚上还熬夜整理了之前的项目,结果直接导致隔天面试时特么困,脑子很不好使,居然简单的算法题都做不出来算法题:不用额外的变量来实现strlen。如果只是单纯的实现strlen应该也是不难的,但不用到变量,那么可以使用递归的方法来解:#include using namespace std;int Strlen(const char *p){ if(p==NULL)return -1; else if... 阅读全文
posted @ 2013-10-01 15:28 宁静致远--Ada 阅读(373) 评论(0) 推荐(0)
摘要:这是一道挺有趣的题,其解题的思路主要还是二叉树的中序遍历先创建一个头结点List,然后通过中序遍历二叉树,把结点串起来即可!注意点:1、需要有一个指针来指向上一个已遍历过的结点2、如果不创建头结点,在后面遍历判断时比较麻烦#includeusing namespace std;struct Node{ int val; Node *lchild; Node *rchild;};//创建二叉树Node *CreateTree(){ char lflag='n',rflag='n'; Node*root=new Node; root->lchild=NULL; 阅读全文
posted @ 2013-10-01 14:54 宁静致远--Ada 阅读(701) 评论(0) 推荐(0)
摘要:今晚本来是在学C++的,看到了Q群上一位朋友写的背包问题出错,帮他改了下。。。结果。。。总结下:1、想好了再写2、细心再细心3、自己的代码,自己会介意!View Code #include <iostream>using namespace std;int main(){ //背包问题,利用了局部优化,w为商品的重量,W[0]应该不是商品,表示没有商品装下 int n,v,i=0,j=0,temp; while(cin>>n>>v) { int *w=new int[n]; for(i=1;i<=n;i++)//重量,这应该是从i=1开始 ... 阅读全文
posted @ 2013-03-14 23:28 宁静致远--Ada 阅读(205) 评论(0) 推荐(0)
摘要:注意:把一个值赋给引用指针时,它必须是一个变量!!! 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 5 double statement(char* &p) 6 { 7 double a; 8 a=*p-'0'; 9 p++;10 while(*p=='*'||*p=='/')11 {12 if(*p=='/')13 {14 p++;15 a/=*p-'0'; 16 ... 阅读全文
posted @ 2013-03-06 22:00 宁静致远--Ada 阅读(301) 评论(0) 推荐(0)