上一页 1 2 3 4 5 6 ··· 15 下一页
  2013年8月16日
摘要: 题目:给定2个整数序列,其中1个是栈的push顺序,判断另一个有没有可能是对应的pop顺序解:其实这题主要是判断进栈次数和出栈次数誓不是相等。我是用栈作的,效率不高,每一个元素最多出栈1次,进栈1此,所以最多进行2n次操作,然后每次对栈顶元素和pb指针指向的元素进行比较(因为假设序列中整数都不相等)代码:/* 判断栈push和pop顺序是否符合 push中的元素顺序入栈,如果等于pb指向的元素,那么循环出栈,知道栈空或者pb元素和栈顶元素不一样,如果一样,出栈且pb++,总共的入栈出栈次数最多是2*n次 */#includeusing namespace std;#define... 阅读全文
posted @ 2013-08-16 16:22 紫金树下 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 面试宝典上的题目,是位运算中的与(&)的体现代码:/* 考察整数2进制数的1的个数 面试宝典问题,用x | (x-1)?? */#includeusing namespace std;int count(int n){ int count=0; while(n!=0) { n=n & (n-1); count++; } return count;}int main(void){ int n; cin>>n; cout<<count(n)<<endl; return 0;} 阅读全文
posted @ 2013-08-16 16:10 紫金树下 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目: 一个台阶共有n级,如果1此可以跳1级,也可以跳2级,求一共有多少种跳法,并分析时间复杂度解:这其实是斐波那契数列问题 当n=1时,只能跳1级,1种跳法 即f(1)=1 当n=2时,可以1级1级跳,或者1次跳2级,共2种跳法 ,即f(2)=2 当n>2时,开始跳1级的话,那么跳法和f(n-1)一样,开始跳2级的话,跳法和f(n-2)一样,所以有f(n-1)+f(n-2)种跳法 所以 f(n)=1,n=1 f(n)=2,n=2 f(n)=f(n-1)+f(n-2) n>2 阅读全文
posted @ 2013-08-16 16:09 紫金树下 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目:定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部解:1.最笨的一种方法就是,每次将字符串左移1个位置,然后把最左边的字符放到最后,这样移动满次数就行,假设字符串长度是n,要移动前面m个字符(m#include#include#includeusing namespace std;/* 第一种 这个时间是O(kn),空间是O(1) */void leftreverse(string& str,int k){ int i=0; while(i(strlen(str)); if(length>0 && k>0 && k> 阅读全文
posted @ 2013-08-16 16:04 紫金树下 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 这个没什么技巧,遍历,如果1个字符是数字符的话,那么以它为起点遍历,寻找以它为起点的连续的数字串的长度,下一次起点是这个连续字符串的下一个位置,保存1个最大长度和一个指向最长连续数字串的指针/* 求字符串中连续最长的数组串 */#include#includeusing namespace std;#define MAX 100int continumax(char* outputstr,char* inputstr){ char* p=inputstr; char* q=NULL; char* k=NULL; int length=0; whil... 阅读全文
posted @ 2013-08-16 15:55 紫金树下 阅读(402) 评论(0) 推荐(0) 编辑
摘要: /* 单链表的就地逆制 */#includeusing namespace std;typedef struct node{ int value; struct node* next;}Node;//头指针Node* head=NULL;void reverse(){ Node *p,*q; p=head; head=NULL; while(p!=NULL) { q=p; p=p->next; //把q插自head之前 q->next=head; head=q; } ... 阅读全文
posted @ 2013-08-16 15:52 紫金树下 阅读(300) 评论(0) 推荐(0) 编辑
  2013年8月14日
摘要: http://www.groad.net/bbs/read.php?tid-5476.htmldynamic_cast进行运行时强制转换。如果在执行时转换非法,则会转换失败。dynamic_cast的通用形式如下:dynamic_cast (expr)其中target-type指定了强制转换的目标类型,expr是需要进行强制转换的表达式。目标类型必须是指针类型或引用类型,也就是说,表达式也必须能够被求值为指针类型或者引用类型的结果。dynamic_cast主要被用来执行多态类型之间的强制转换。比如两个多态类 B 和 D,且 D 派生于 B,此时我们可以用dynamic_cast将 D* 指针. 阅读全文
posted @ 2013-08-14 14:50 紫金树下 阅读(992) 评论(0) 推荐(0) 编辑
  2013年8月12日
摘要: 转1个写的比较全面的.http://hubingforever.blog.163.com/blog/static/17104057920122256134681/本文编辑整理自:http://hi.baidu.com/pine515/blog/item/28f41f496042e8ee83025c4e.htmlhttp://blog.sina.com.cn/s/blog_4913c1f301000bip.html一、ANSI C标准中并没有规定,相邻声明的变量在内存中一定要相邻。为了程序的高效性,内存对齐问题由编译器自行灵活处理,这样导致相邻的变量之间可能会有一些填充字节。对于基本数据类型(比 阅读全文
posted @ 2013-08-12 15:05 紫金树下 阅读(388) 评论(0) 推荐(0) 编辑
  2013年8月7日
摘要: /* 输入一个表示整数的字符串,把该字符串转换成整数并输出 */#include#includeusing namespace std;int main(void){ string input; long result; int i; bool flag; while(cin>>input,input!="eof") { result=0; flag=false; for(i=0;i='0' && input[i]<='9') result=result*10+(input[i]... 阅读全文
posted @ 2013-08-07 17:08 紫金树下 阅读(115) 评论(0) 推荐(0) 编辑
  2013年7月26日
摘要: 用单循环链表做的。代码./* 这是约瑟夫环*/#includeusing namespace std;typedef struct node{ int data; struct node* next;}Link;void josephus(int n,int m){ //用循环链表做 Link *head,*tail; int i,j; head=NULL; tail=NULL; for(i=0;idata=i; temp->next=NULL; if(head==NULL) { ... 阅读全文
posted @ 2013-07-26 10:53 紫金树下 阅读(166) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页