随笔 - 147  文章 - 5  评论 - 6  阅读 - 81225
08 2013 档案
[转] 毒酒问题---1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。问最少需要多少只老鼠可在一周内找出毒酒
摘要:http://blog.csdn.net/wcyoot/article/details/6435906本题考查的是二进制编码问题。如对1000桶按1~1000编码,需要10位二进制数。因此只需要取10只老鼠,每只老鼠只喝其对应位数为1的编号的酒。即10只老鼠按以下编码:第一只 00000 00001第二只 00000 00010第三只 00000 00100第四只 00000 01000...第十只 10000 00000每只老鼠只喝其编码与酒编码做位与运算非0的酒。如果毒酒的编码在某一位为1,则监控该位的老鼠必喝,结果为1.即把10只老鼠的结果,按位填入一个10位二进制数中,其结果即为毒酒编 阅读全文
posted @ 2013-08-27 10:52 紫金树下 阅读(1696) 评论(0) 推荐(0) 编辑
36。 龙舟比赛
摘要:/* 龙舟比赛,这题每次把胜者的编号保存下来,然后对他们进行比较,知道只剩1个胜者 */#includeusing namespace std;int w[6][6] = { 0,1,2,3,0,0, 1,1,2,1,1,1, 2,2,2,2,2,2, 3,1,2,3,3,3, 0,1,2,3,4,5 }; int order[6]={1,3,4,2,0,5};int result[6]={-1};void play(int n){ /* 首先声明1... 阅读全文
posted @ 2013-08-20 15:44 紫金树下 阅读(229) 评论(0) 推荐(0) 编辑
35.求一个矩阵中最大的二维矩阵
摘要:/* 求1个矩阵中最大的二维矩阵 1。 单就这一题来说,首先方法就是遍历 */#includeusing namespace std;int a[][5]={{1,2,0,3,4}, {2,3,4,5,1}, {1,1,5,3,0}, };int m=3;int n=5;void max_matrix(void){ int i,j,k,s; int sum=-65535; for(i... 阅读全文
posted @ 2013-08-20 15:42 紫金树下 阅读(539) 评论(0) 推荐(0) 编辑
34。队列
摘要:http://blog.csdn.net/v_july_v/article/details/6126444队列的应用场景为:一个生产者线程将int类型的数入列,一个消费者线程将int类型的数出列生产者消费者线程演示一个生产者线程将int类型的数入列,一个消费者线程将int类型的数出列#include #include #include #include #include using namespace std; HANDLE ghSemaphore; //信号量 const int gMax = 100; //生产(消费)总数 std::queue... 阅读全文
posted @ 2013-08-20 15:36 紫金树下 阅读(190) 评论(0) 推荐(0) 编辑
33. 字符串匹配算法
摘要:题目: 给一个很长字符串,要求找到符合要求的字符串,例如目的串123,1***3***2,12****3这些都要找出来解: 这题的意思是,例如给定目的串S="abc",那么在这个很长的字符串中寻找子字符串,这个子字符串中满足S中的每个字符都要出现,并且S中的某一个字符只出现1次。设待匹配字串长度位n,模式字符串长度位m1。对待匹配字符串的每一个字符进行m次匹配,记录下S中每个字符出现个数,当个数都>=1时结束,此时是满足条件的1个子字符串,然后从这个子字符串的下一个字符开始匹配时间是O(m*n)2.hash的方法。对目的串hash,遍历待匹配字符串,对每个字符hash 阅读全文
posted @ 2013-08-20 15:34 紫金树下 阅读(338) 评论(0) 推荐(0) 编辑
求数组两两之差绝对值最小的值[转 ]
摘要:1。http://www.cnblogs.com/HappyAngel/archive/2011/08/22/2149916.html2。http://blog.csdn.net/cjh1123/article/details/6579008 阅读全文
posted @ 2013-08-16 16:37 紫金树下 阅读(206) 评论(0) 推荐(0) 编辑
29. 栈的push,pop序列
摘要:题目:给定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) 编辑
28. 求整数的二进制中1个个数
摘要:面试宝典上的题目,是位运算中的与(&)的体现代码:/* 考察整数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) 编辑
27. 跳台阶问题
摘要:题目: 一个台阶共有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 紫金树下 阅读(180) 评论(0) 推荐(0) 编辑
26. 左旋转字符串
摘要:题目:定义字符串的左旋转操作,把字符串前面的若干个字符移动到字符串的尾部解: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) 编辑
25 .求字符串中连续最长的数字串
摘要:这个没什么技巧,遍历,如果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 紫金树下 阅读(403) 评论(0) 推荐(0) 编辑
24.单链表就地逆制
摘要:/* 单链表的就地逆制 */#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) 编辑
关于dynamic_cast
摘要: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 紫金树下 阅读(996) 评论(0) 推荐(0) 编辑
内存对齐-C语言struct内存占用问题
摘要:转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) 编辑
20. atoi函数
摘要:/* 输入一个表示整数的字符串,把该字符串转换成整数并输出 */#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) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示