博文

挑战智力!(2007-04-28 23:55:00)

摘要:                                                      挑战智力! 第一关:乒乓球问题 假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球? 第二关:酒肆老板娘的难题 据说有人给酒肆的老板娘出了一个难题:此人明明知道店里只有两个舀酒的勺子,分别能舀7两和11两酒,却硬要老板娘卖给他2两酒。聪明的老板娘毫不含糊,用这两个勺子在酒缸里舀酒,并倒来倒去,居然量出了2两酒,聪明的你能做到吗? 第三关:称苹果问题 10个箱子,每个箱子10个苹果,其中一个箱子的苹果是9两/个,其他的都是1斤/个。 要求利用一个秤,只秤一次,找出那个装9两/个的箱子。 第四关: 时间问题 烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 第五关:山羊的速度 卢姆教授说:“有一次我目击了两只山羊的一场殊死决斗,结果引出了一个有趣的数学问题。我的一位邻居有一只山羊,重54磅,它已有好几个季度在附近山区称王称霸。后来某个好事之徒引进了一只新的山羊,比它还要重出3磅。 开始时,它们相安无事,彼此和谐相处。可是有一天,较轻的那只山羊站在陡峭的山路顶上,向它的竞争对手猛扑过去,那对手站在土丘上迎接挑战,而挑战者显然拥有居高临下的优势。不幸的是,由于猛烈碰撞,两只山羊都一命呜呼了。   现在要讲一讲本题的奇妙之处。对饲养山羊颇有研究,还写过书的乔治·阿伯克龙比说道:“通过反复实验,我发现,动量相当于一个自20......

阅读全文(3510) | 评论:33

递归完美解决"傻子造成的问题"(2007-04-28 22:28:00)

摘要:昨天晚上快睡觉的时候在这里看到了这样的一个帖子,问题是: "100个人排队乘坐有100个座位的飞机,正常情况时每个都都会对号入坐,但是,第一个上飞机的是个傻子,他随机坐了一个位子,接下来的人上飞机时,如果自己座位被人坐了就会随机找个座位坐下,否则就坐自己坐位。问题:最后一个上飞机的人坐到自己座位的概率是多少??" 我对此特别感兴趣就想了一个晚上,算是找到了自己比较满意的答案0.5.虽然我看到回帖的人中有很多都说的是0.5,但是我是有我自己的解决思路,在这里拿出来和大家一起探讨一下;有什么不对的地方希望大家多指教.如果你能指出我解答之中的错误请给我指出来,送8分。 考虑一般的问题,不管一共有多少人,设为n个人,n个位置.反面考虑,和有的人一样求最后一个人(即第n个人)不能坐到自己位置的概率为P(n);设倒数第二个人不能坐到自己位置的概率为P(n-1),则P(n) = P(n - 1) + (1/(n - (n - 1) + 1)) * P(n - 1);第一个人不能坐到自己的位置的概率显然是(n-1)/n;第二个人不能坐到自己的位置的概率是:1/n (只有傻子可能坐他的位置);即这些人中第k个人(k <= n && k > 2)不能坐到自己的位置是;P(k) = P(k-1)+{1/[n-(k-1)+1]}*P(k-1); 用数学规纳法证明(我其实是通过一般的情况才看出来的这个规律):证:最基本的情况就是当k=3的时候;第三个人的位置只可能被第一个人坐和被第二个人坐;    1.当被第一个人坐时,而第二个人坐自己的位置概率为(1/n)*1;    2.当被第二个人坐时,肯定第一个人把第二个人的位置坐了第二个人再把      三个人的位置坐了(第二个人坐的时候有n-1个位置他可以随便选),      则概率为:(1/n)*[1/(n-1)] = {1/[n-(3-1)+1]}*P(2);  则第三个人不能坐到自己位置的概率为;(1/n)+{1/[n-(3-1)+1]}*(1/n);      即:P(3) = P(2)......

阅读全文(2168) | 评论:0

趣味算法二例(2)(2007-04-27 20:37:00)

摘要: 趣味算法二例(2) 找到了一些关于算法的趣题,现拿出来与大家分享,待其它的整理好再帖出来:  逻辑推理能力是在智力测验和智力游戏中取胜的关键,它要求人们利用已知条件,通过分析与判断,得出正确的答案。计算机解决这类问题有明显的优势,因为它具备大的存储能力,能够穷举所有可能的情形。请看下题:-----------------------------------------------------------------------------婚礼上的谎言    三对情侣参加婚礼,三个新郎为A,B,C,三个新娘为X,Y,Z,有人想知道究竟谁和谁结婚,于是就问新人中的三位,得到如下的提示:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚。这人事后知道他们在开玩笑,说的全是假话,那么究竟谁与谁结婚呢?    我们将A,B,C用数字1,2,3表示,用“X=1”表示新娘X和新郎A结婚,如果新娘X不和新郎A结婚,那么写成X!=1。用这种方法,根据新人的叙述得到如下的表达式:X!=1 A不与X结婚X!=3 C不与X结婚Z!=3 C不与Z结婚题H还隐含着的一个条件是:三个新娘不能互为配偶,则有:X!=Y且X!=Z且Y!=Z穷举所有可能的情形,代入上述表达式进行推理运算。如果假设的情况使上述表达式的结果为真,假设的情况就是正确的结果。 代码如下:#include<stdio.h>main(){    int x,y,z;    for(x=1;y<=3;x++)        for(y=1;y<=3;y++)            for(z=1;z<=3;z++)             ......

阅读全文(2426) | 评论:0

趣味算法二例(2007-04-27 20:36:00)

摘要: 趣味算法二例 中奖彩球某商场欲举办抽奖促销活动。有人建议在一个口袋中放12个乒乓球,其中三个为红色,3 个为白色,6 个为黑色,要求从中任取8个,如果满足一定的颜色组合即中奖,这样的颜色组合共有多少种?    假设任意取出的球中红色球为i个,白色球为j个,黑色球的个数根据题意应为8-i-j个,并且红球和白球的个数取值范围是0 至3,在红球与白球个数确定的情况下黑球个数取值应为8-i-j=6.同样用穷举法,用二重循环求解这个问题。 代码如下:#include<stdio.h>main(){    int i,j,count=0;    printf("\n     RED BALL WH99vE BALL BLACK BALL\n");    printf("--------------------------\n");    for(i=0;i<=3;i++)     /*i作为红球个数作为外层循环变量*/        for(j=0;j<=3;j++)  /*j作为白球个数作为内层循环变量*/            if((8-i-j)<=6)  /*如果黑球个数满足要求,打印该组合*/                printf("%2d:\t%d\t   %D\n",++count,i,j,8-i......

阅读全文(2235) | 评论:0

如何追MM(2007-04-25 00:56:00)

摘要:                                                      如何追MM  一、应该给mm留下什么样的第一印象(时间:刚开始接触mm)   1、我认为最关键的,是要让mm看到你的上进心。 男人的最大魅力在于事业有成,年轻人工作时间不长谈不上“有成”,这时候你就要让mm觉得你是个有上进心的人。 别的可以胡说八道,但这个问题不能含糊,你一定要告诉mm,你对未来充满信心,你不满足于现状,并且你已经有了长远的计划,总之你的未来不是梦。   2、要显得有信心、有责任心 不要像个小孩子,女孩子都很希望能找个依靠,你要拿出自己的信心和责任心来。有一个错的选择总比没有选择要好的多。   3、不要太正经,但也不要太随便 该正经的地方就正经,该调侃的时候就调侃。 女孩子都喜欢有点玩世不恭的男人,所以别显得对什么都特别在意,那样太呆板。   4、显得成熟一点 遇事镇定、从容不迫的男人对mm有致命的吸引力。   二、如何与mm展开进一步接触(时间:开始追的阶段)   1、这个阶段最关键的是不能着急,不要把事情弄的那么清楚,让人家一眼就能看出你在追人家。 想一想,一般人都不会一眼就看上你,但也不会看一眼就讨厌你,都是老百姓家的孩子除非你长得像周润发刘德华或者凯文科斯特纳,好感是需要随着了解的不断增加而实现的,所以问题的关键是你要得的进一步发展的机会。 站在女孩子的角度替人家想一想:你这么直接了当的冲过来要搞对象,女孩子肯定有心理压力。这要是接触一阵后发现不喜欢你,那不就成了耍你了么?......

阅读全文(3082) | 评论:2

致命的八个经典问题 (2007-04-25 00:50:00)

摘要:                                         致命的八个经典问题        问题一,如果你家附近有一家餐厅,东西又贵又难吃,桌上还爬着蟑螂,你会因为它很近很方便,就一而再、再而三地光临吗?回答:你一定会说,这是什么烂问题,谁那么笨,花钱买罪受?可同样的情况换个场合,自己或许就做类似的蠢事。不少男女都曾经抱怨过他们的情人或配偶品性不端,三心二意,不负责任。明知在一起没什么好的结果,怨恨已经比爱还多,但却“不知道为什么”还是要和他搅和下去,分不了手。说穿了,只是为了不甘,为了习惯,这不也和光临餐厅一样?   ——做人,为什么要过于执著?!   问题二,如果你不小心丢掉100块钱,只知道它好像丢在某个你走过的地方,你会花200块钱的车费去把那100块找回来吗?回答:一个超级愚蠢的问题。   可是,相似的事情却在人生中不断发生。做错了一件事,明知自己有问题,却*也不肯认错,反而花加倍的时间来找藉口,让别人对自己的印象大打折扣。被人骂了一句话,却花了无数时间难过,道理相同。为一件事情发火,不惜损人不利已,不惜血本,不惜时间,只为报复,不也一样无聊?失去一个人的感情,明知一切已无法挽回,却还是那么伤心,而且一伤心就是好几年,还要借酒浇愁,形销骨立。其实这样一点用也没有,只是损失更多。   ——做人,干吗为难自己?!   问题三,你会因为打开报纸发现每天都有车祸,就不敢出门吗?回答:这是个什么烂问题?当然不会,那叫因噎废食。   然而,有不少人却曾说:现在的离婚率那么高,让我都不敢谈恋爱了。说得还挺理所当然。也有不少女人看到有关的诸多报道,就对自己的另一半忧心忡忡,这不也是类似的反应?所谓乐观,就是得相信:虽然道路多艰险,我还是那个会平安过马路的人,只要我小心一点,不必害怕过马路。 ......

阅读全文(2108) | 评论:0

挂在美国人口边的最酷口语(2007-04-25 00:01:00)

摘要:   我们在看电影中就会经常听到这些。美国人常挂的最酷口语 who knows! 天晓得!it is not a big deal! 没什么了不起!how come… 怎么回事,怎么搞的。easy does it. 慢慢来。don't push me. 别逼我。come on! 快点,振作起来!have a good of it. 玩得很高兴。it is urgent. 有急事。what is the fuss? 吵什么?still up? 还没睡呀?it doesn't make any differences. 没关系。don't let me down. 别让我失望。god works. 上帝的安排。don't take ill of me. 别生我气。hope so. 希望如此。go down to business. 言归正传。none of my business. 不关我事。it doesn't work. 不管用。i'm not going. 我不去了。does it serve your purpose? 对你有用吗? i don't care. 我不在乎。not so bad. 不错。no way! 不可能!don't flatter me. 过奖了。your are welcome. 你太客气了。it&......

阅读全文(2352) | 评论:0

用栈的实现排序算法。(2007-04-24 21:27:00)

摘要://                     Stack Sort program in C++//----------------------用栈的方式实现排序----------------//作者:andyhou//题目://    输入一个栈(不是数组),并且程序中只允许使用一定的整数及栈。//    结束时排序结果放在栈中,栈顶的元素最小。//算法复杂度://     在最差情况下。算法的执行时间是@(N~2);#include <iostream>#include <stack>using namespace std; //输入栈的函数。void EnStack(stack<int> &Astack,int n){ int item; cout<<"Enter the  the data element: "; for(int i=0;i<n;i++) {  cin>>item;  Astack.push(item); }}//采用两个栈的方式实现栈的转换后排序。void StackSort(stack<int> &Astack,int n){ using std::stack; stack<int> Bstack;  //申请一个临时的栈用来转换。 for(int i=0;i<n;i++) {  for(int j=i;j<n-1;j++)//注意临界的情况。  {       int temp1=Astack.top();      ......

阅读全文(6385) | 评论:2

快速排序算法的类实现(2007-04-23 22:42:00)

摘要:                   //Quick Sort program in C++//用类实现快速排序。#include <iostream>using namespace std;//比较类。class intCompare{public: static bool it(int x,int y) {  return x<y; } static bool eq(int x,int y) {  return x==y; } static bool gt(int x,int y) {  return x>y; }}; template<class Record,class Compare>class Sorter{protected: static void swap(Record Array[],int i,int j);public: void printArray(Record Array[],int n);}; template<class Record,class Compare> void Sorter<Record,Compare>::swap(Record Array[],int i,int j){ Record temp=Array[i]; Array[i]=Array[j]; Array[j]=temp;} template <class Record,class Compare>void Sorter<Record,Compare>::printArray(Record Array[],int n){ cout<<"Print all element!"; for(int i=0;i<n;i++)  cout<&l......

阅读全文(2893) | 评论:0

Shell排序算法的简单实现(2007-04-22 23:36:00)

摘要://                                  Shell sort program in c++#include <iostream>using namespace std; void swap(int *array,int i,int j){ int temp=array[i]; array[i]=array[j]; array[j]=temp;}//分部中的插入入排序。void middleInsertSort(int *Array,int n,int delta){ for(int i=delta;i<n;i+=delta)   //是相隔一个delta进行插入排序。  for(int j=i;j>=delta;j-=delta) //与前面的几个元素比较交换。  {   if(Array[j]>Array[j-delta])    swap(Array,j,j-delta);   else    break;              //比了其中的最大的或最小的就不用再比其他元素                     }        ......

阅读全文(3177) | 评论:1