自言自语

I'm Wang Xianyuan, writing for myself, more studying, more experience…

两道数学题:河岸的距离和变量交换

By

1.河岸的距离 
 
两艘轮船在同一时刻驶离河的两岸,一艘从A驶往B,另一艘从B开往A,其中一艘开得比另一艘快些,因此它们在距离较近的岸500公里处相遇。到达预定地点后,每艘船要停留15分钟,以便让乘客上下船,然后它们又返航。这两艘渡轮在距另一岸100公里处重新相遇。试问河有多宽? 
 
分析与解答 
 
当两艘渡轮在x点相遇时,它们距A岸500公里,此时它们走过的距离总和等于河的宽度。当它们双方抵达对岸时,走过的总长度等于河宽的两倍。在返航中,它们在z点相遇,这时两船走过的距离之和等于河宽的三倍,所以每一艘渡轮现在所走的距离应该等于它们第一次相遇时所走的距离的三倍。在两船第一次相遇时,有一艘渡轮走了500公里,所以当它到达z点时,已经走了三倍的距离,即1500公里,这个距离比河的宽度多100公里。所以,河的宽度为1400公里。每艘渡轮的上、下客时间对答案毫无影响。 
 
2.变量交换 
 
不使用任何其他变量,交换a,b变量的值? 
 
分析与解答
a = a+b;

b = a-b;

a = a-b;

Posted in Study | Tagged: | Comments Off on 两道数学题:河岸的距离和变量交换

逻辑推理:六位朋友猜谜语自娱。看你能猜出多少个?

By

红衣男士先问:上周我关了卧房的灯,可是我能在卧房黑暗之前就上到床上。如果床离电灯的开关有10尺之远,我是怎么办到的? 
 
蓝衣男士说:每次我阿姨来我的公寓看我时,她总是提早下了五层楼,然后一路走上来,你能告诉我为什么吗? 
 
绿衣男士说:有什么字以“IS”起头,“ND”结尾,有“LA”在中间? 
 
红衣女士说:有天晚上我叔叔正在读一本有趣的书,突然他太太把灯关掉了。虽然房间全黑了,他还是继续在读书。他是如何做到的? 
 
绿衣女士说:今天早上我一只耳环掉到我的咖啡杯里头,虽然杯子都装满了咖啡,但是耳环却没湿,为什么? 
 
蓝衣女士问最后一个问题:昨天,我父亲碰到下雨,他没带伞也没带帽子,他的头上没有用任何东西遮雨,他的衣服全湿了,但是他头上没有一根头发是湿的,为什么? 
 
分析与解答 
 
1.在解这个问题时,大部分的人都会有个不必要的假设:认为关灯的时间是在晚上,但是在题目中并没有这么说。关灯后房间并没有黑掉,因为是白天。 
 
2.错误的假设是:阿姨的身高和常人一样。事实上,她是侏儒,够不到电梯上她侄子那层楼的按钮。 
 
3.错误的假设是:在三对字母之间还有其他字母。那个字就是“ISLAND”。 
 
4.错误的假设是:认为人只能用眼睛才能看书。那位男士是盲人,他以点字来读书。 
 
5.错误的假设是:认为“咖啡”一定指的是液体的咖啡。耳环掉入干的咖啡罐中,自然不会弄湿。 
 
6.错误的假设是:父亲头上有头发。父亲是秃头,因此没有头发可被淋湿。

逻辑推理:三张扑克牌

By

桌子上有三张扑克牌,排成一行。现在,我们已经知道: 
1.K右边的两张牌中至少有一张是A。
2.A左边的两张牌中也有一张是A。 
3.方块左边的两张牌中至少有一张是红桃。
4.红桃右边的两张牌中也有一张是红桃。 

问:这三张是什么牌? 

分析与解答

这三张牌,从左到右依次为:红桃K、红桃A和方块A。

先来确定左边的第一张牌。从前提1得知这张牌是K;从前提4得知这张牌是红桃;所以,这张牌是红桃K。再来确定右边的第一张牌。从前提2得知这张牌是A;从前提3得知这张牌是方块;所以,这张牌为方块A。最后,来确定当中的一张牌。从前提2得知,或者这张牌是A,或者左边第一张是A;又从前提1得知左边第一张是K,所以,当中这张牌是A。同理,从前提4得知,或者当中这张牌是红桃,或者右边第一张牌是红桃;但由前提3可知右边第一张是方块,这样,即可确定,当中这张牌是红桃。

Posted in Study | Tagged: | Comments Off on 逻辑推理:三张扑克牌

线性表的链式存储结构

By

最近参加校园招聘,笔试是必要的。先热身,把数据结构的基础东东拿出来 Review 一下。
线性表的链式存储结构:
链式存储表示:

typedef struct LNode{
  ElemType   data;
  Struct LNode *next;
}LNode,*LinkList;

基本操作在链表上的实现:
(1) 单链表的取元素算法(经典)

Status GetElem_L(LinkList L, int i,ElemType &e)
{
p=L->next; j=1;
while(p && j<i)
{
      p=p->next;++j;
}
if(!p || j>i) return ERROR;
e=p->data;
return OK;
}

算法分析:
基本操作是: 比较 j 和 I, 并把指针后移 , 循环体执行的次数 , 与被查元素的位置有关 . 假设表长为 n, 如果 1<=i<=n, 那么循环体中语句的执行次数为 i-1. 否则次数为 n 所以时间复杂度为 O(n).

(2)  插入元素算法

Status ListInsert_L(LinkList &L, int i,ElemType e)
{
   p=L;j=0;
   while(p&&j<i-1)
      { p=p->next;++j}
   if(!p || j>i-1)
      return ERROR;
   s = (LinkList)malloc(sizeof(LNode));
   s->data = e;
   s->next = p->next;
   p->next =s;
   return OK;
}

(3) 删除元素算法

Status ListDelete_L(LinkList &L, int i,ElemType &e)
{
   p=L;j=0;
while(p &&j<i-1)
   {p=p->next;++j}
if(!p ||j>i-1)
      return  ERROR;
q=p->next;
   p->next =q->next;
   e =q->data;
   free(q);
   return OK;
}

算法分析 :
插入和删除算法 , 都要先找到第 i-1 个节点 , 所以时间复杂度为 O(n);
(4) 单链表的建立算法

void CreateList_L(LinkList &L,int n){
L =(LinkList)malloc(sizeof(LNode));
L->next = null;
  for(i = n;i>0;--i){
  p =(LinkList)malloc(sizeof(LNode));
  scanf(&p->data);
  p->next = L->next;
  L->next =p;
  }
}

算法分析 :
按照逆序循环输入 n 个数据元素的值 , 建立新节点 . 并插入 . 因此算法的时间复杂度为 O(n).

Posted in Study | Tagged: , | Comments Off on 线性表的链式存储结构

IE6灾难给我带来的烦恼

By

一直用 FireFox 和 IE8 模拟的 IE7,今天特意用 IE6 看了下我这个博客。惨不忍睹啊!赶紧又瞧了瞧博易的几套主题模板,对 IE6 的支持简直就是一塌糊涂!

心想既然 IE6 这么的另类,那干脆别管它了吧。下意识地跑到网站统计看了看,又吓了一跳:有一半以上的浏览者使用的是 IE6 的浏览器,我的天!

还好博易官方和博易的标准模板是对 IE6 保持兼容的。我才意识到为什么发布的一些模板用的人少,而大多数的朋友仍然在用默认主题模板的原因了。

要把所有的模板都改过使其兼容 IE6 简直就是噩梦一般,我只能寄希望于 IE6 的用户升级到更高版本或者换用其他浏览器了。

记博易v1.7.5 发布

By

博易v1.7.5已经做好了很久,今天才打包并正式发布。这个版本几乎没有动内核,修改主要是体验上的,所以升级过程也相当简单。

每次发布一个新的版本我都期望能为博易积累些新的人气,这次也不例外。事实上我已经看到一个令我欣慰的趋势——博易正以一支后起之秀正从原本已经三分天下的国内博客市场逐步形成了自己的用户群和市场,尽管这个过程并不容易,但的的确确已经有人开始关注博易博客了。

博易获得如此的关注正是本身的优秀与诸多博客特性所成就的,这要感谢 BlogEngine.NET 官方与世界分享的这么优秀的博客架构(至今仍未发现有在架构上与之相媲美的ASP.NET博客,至今也未能发现在功能实现上有如此之丰富且简单的ASP.NET博客,近乎完美了!)。就拿博易的 SEO 性能来说,我们可以做一个比对:

http://whois.domaintools.com 是一个查看网站信息的页面,所分析内容很全,包括 SEO 性能指标。我们看到一些博客在 http://whois.domaintools.com 上的 SEO 性能列表如下。

 博客名称  SEO 性能指标  标题关联度
 Bo-Blog  79%  100% 
 L-BLOG.NET  95%  66%
 PJ-Blog  86%  100%
 Zblog  76%  33%
 BlogYi.NET(博易)  92%  100%

以上数据采集时间为:GMT +8 2008-10-17 13:25

不仅仅是 SEO 性能指标令人满意,更多的是博客概念的完备。国内很多博客单纯强调功能,也确实实现了许多功能。但功能多了之后,开发团队对博客的升级往往就成了“为了实现功能而开发”,而不是“为了丰富博客概念而开发”。那么该如何进行“为了丰富博客概念的开发”呢?举一个例子,BlogEngine.NET 官方为其博客设计了一种称为“APML过滤”的功能,能够神奇地生成博主对博客文章的“口味”(实际上是一个XML格式的文件),博主有了自己的“口味”,他看其他的博客的时候就可以根据自己的这个“口味”来过滤其他博客中的文章了。这样一来,看到的文章基本上都是自己感兴趣的,而那些不感兴趣的文章将被忽略掉!

这正如一句软件业的名言:现在连用户自己都不知道自己需要什么软件,而我们要做的就是为用户提供他们真正所需要的软件。