12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球
作者:大鹏 发布于:2011-7-15 16:14 Friday
分类:考试相关
标签: 算法
1,天平一边放四个,平则坏球在余下的四个里,好办。 不平,先将偏重的四个编号为:1、2、3、4。偏轻的编为A、B、C、D(因为不知道轻重)。
2。天平一边放三个,比如:左边放1、2、A。右边放3、4、B。 平则坏球是C、D 里偏轻的,不平则根据轻重淘汰1、2、B或 3、4、A
二、用无码天平称乒乓球的重量,每称一次会有几种结果?有三种不同的结果,即左边的重量重于、轻于或者等于右边的重量,为了做到 称三次就能把这个不合格的乒乓球找出来,必须把球分成三组(各为四只球)。现在,我们为了解题的方便,把这三组乒乓球分别编号为 A组、B组、C组。
首先,选任意的两组球放在天平上称。例如,我们把A、B两组放在天平上称。这就会出现两种情况:
第一种情况,天平两边平衡。那么,不合格的坏球必在c组之中。
其次,从c组中任意取出两个球 (例如C1、C2)来,分别放在左右两个盘上,称第二次。这时,又可能出现两种情况:
1·天平两边平衡。这样,坏球必在C3、C4中。这是因为,在12个乒乓球中,只有一个是不合格的坏球。只有C1、C2中有一个是坏球时,天平两边才不平衡。既然天平两边平衡了,可见,C1、C2都是合格的好球。
称第三次的时候,可以从C3、C4中任意取出一个球(例如C3), 同另一个合格的好球(例如C1)分别放在天平的两边,就可以推出结果。这时候可能有两种结果:如果天平两边平衡,那么,坏球必是C4;如果天平两边不平衡,那么,坏球必是C3。
2·天平两边不平衡。这样,坏球必在C1、C2中。这是因为,只有C1、C2中有一个是坏球时,天平两边才不能平衡。这是称第二次。
称第三次的时候,可以从C1、C2中任意取出一个球(例如C1), 同另外一个合格的好球(例如C3),分别放在天平的两边,就可以推出结果。道理同上。
以上是第一次称之后出现第一种情况的分析。
第二种情况,第一次称过后天平两边不平衡。这说明,c组肯定都是合格的好球,而不合格的坏球必在A组或B组之中。
我们假设:A组 (有A1、A2、A3、A4四球)重,B组(有B1、B2、B3、B4四球)轻。这时候,需要将重盘中的A1取出放在一旁,将A2、A3取出放在轻盘中,A4仍留在重盘中。同时,再将轻盘中的B1、 B4取出放在一旁,将B2取出放在重盘中,B3仍留在轻盘中,另取一个标准球C1也放在重盘中。经过这样的交换之后,每盘中各有三个球: 原来的重盘中,现在放的是A4、B2、C1,原来的轻盘中,现在放的是A2、A3、B3。
这时,可以称第二次了。这次称后可能出现的是三种情况:
1·天平两边平衡。这说明A4B2C1=A2A3B3,亦即说明,这六只是好球,这样,坏球必在盘外的A1或B1或B4之中。已知A盘重于B盘。所以,A1或是好球,或是重于好球;而B1、B4或是好球,或是轻于好球。
这时候,可以把B1、B4各放在天平的一端,称第三次。这时也可能出现三种情况:(一)如果天平两边平衡,可推知A1是不合格的坏球,这是因为12只球只有一只坏球,既然B1和B4重量相同,可见这两只球是好球,而A1为坏球;(二)B1比B4轻,则B1是坏球;(三) B4比B1轻,则B4是坏球,这是因为B1和B4或是好球,或是轻于好球,所以第三次称实则是在两个轻球中比一比哪一个更轻,更轻的必是坏 球。
2·放着A4、B2、C1的盘子(原来放A组)比放A2、A3、B3的盘子(原来放B组)重。在这种情况下,则坏球必在未经交换的A4或B3之中。这是因为已交换的B2、A2、A3个球并未影响轻重,可见这三只球都是好球。
以上说明A4或B3这其中有一个是坏球。这时候,只需要取A4或B3同标准球C1比较就行了。例如,取A4放在天平的一端,取C1放在天平的另一端。这时称第三次。如果天平两边平衡,那么B3是坏球; 如果天平不平,那么A4就是坏球 (这时A4重于C1)。
3.放A4、B2、C1的盘子(原来放A组)比放在A2、A3、B3的盘 子(原来放B组)轻。在这种情况下,坏球必在刚才交换过的A2、A3、B23球之中。这是因为,如果A2、A3、B2都是好球,那么坏球必在A4或B3之中,如果A4或B3是坏球,那么放A4、B2、C1的盘子一定 重于放A2、A3、B3的盘子,现在的情况恰好相反,所以,并不是A2、A3、B2都是好球。
以上说明A2、A3、B2中有一个是坏球。这时候,只需将A2同A3相比,称第三次,即推出哪一个是坏球。把A2和A3各放在天平的一端 称第三次,可能出现三种情况:(一)天平两边乎衡,这可推知B2是坏球;(二)A2重于A3,可推知A2是坏球;(三)A3重于A2,可推知A3是坏球。
根据称第一次之后,出现的A组与B组轻重不同的情况,我们刚才假设A组重于B组,并作了以上的分析,说明在这种情况下如何推论哪一个球是坏球。如果我们现在假定出现的情况是A组轻于B组,过程是一样的。
算法复杂度计算
作者:大鹏 发布于:2011-7-11 15:40 Monday
分类:考试相关
标签: 算法
⑴ 找出算法中的基本语句;
算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
⑵ 计算基本语句的执行次数的数量级;
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
⑶ 用大Ο记号表示算法的时间性能。
将基本语句执行次数的数量级放入大Ο记号中。
如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
C# 中~操作符的理解
作者:大鹏 发布于:2008-3-28 22:23 Friday
分类:Asp.Net 2.0
标签: 算法 c#
[code]using System;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("~2 := {0}",~2);
Console.WriteLine("~-2 := {0}",~-2);
}
}
}
[/code]
运行结果:
HashMap与Hashtable的区别
作者:大鹏 发布于:2008-1-15 21:42 Tuesday
分类:Java与Jsp
标签: java 数据结构 算法 c#
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
4.HashTable使用Enumeration,HashMap使用Iterator。
一段PHP加密与解密的代码
作者:大鹏 发布于:2007-10-23 21:57 Tuesday
分类:PHP&MySql
标签: 算法 php
用C语言获取当前系统时间
作者:大鹏 发布于:2007-7-25 17:44 Wednesday
分类:考试相关
标签: 数据结构 算法
printf ( "%4d-%02d-%02d %02d:%02d:%02d\n",1900+timeinfo->tm_year, 1+timeinfo->tm_mon,
timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
就是直接打印tm,tm_year 从1900年计算,所以要加1900,
月tm_mon,从0计算,所以要加1
经典算法-C#四种排序算法
作者:大鹏 发布于:2007-7-25 12:21 Wednesday
分类:Asp.Net 2.0
标签: 数据结构 算法 .net c#
冒泡排序
经典的汉诺塔递归
作者:大鹏 发布于:2007-7-25 10:20 Wednesday
分类:考试相关
标签: java 数据结构 算法 c#
后来,这个传说就演变为汉诺塔游戏:
网上收集的一些c#面试题及答案(二)
作者:大鹏 发布于:2007-7-19 16:57 Thursday
分类:Asp.Net 2.0
标签: 免费资源 javascript 数据结构 算法 收藏 c#
答. 1).使用QueryString, 如....?id=1; response. Redirect()....
2).使用Session变量
3).使用Server.Transfer
网上找到的一些C#面试题 收藏一下
作者:大鹏 发布于:2007-7-19 16:54 Thursday
分类:Asp.Net 2.0
标签: javascript 数据结构 算法 收藏 c#
2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组
3:请简述面向对象的多态的特性及意义!
4:session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法
5:对数据的并发采用什么办法进行处理较好。
C#对象数组排序方法
作者:大鹏 发布于:2007-7-18 9:48 Wednesday
分类:Asp.Net 2.0
标签: 算法 .net c#
下面介绍一种简单有效的排序方法。
下面的排序方法中使用了Array.Sort()和Array.Reverse()方法对数据进行正/反排序,变量isReverse做为反排序的标志位方法传入了2个参数,一个是要排序的对象数组list,一个是排序关键字key,即要对象的根据哪个属性或字段来进行排序(这个值是等于对象的属性/字段名)
type.InvokeMember()方法可以得到对象实例的属性/字段值,这里使用的是字段
在得到数组中的每一个要排序的字段值后,把这个字段值数组做为Array.Sort()方法的参数传入,Sort方法就会将对象数按这个字段的值进行排序。
代码如下:
无限级目录分类的PHP实现
作者:大鹏 发布于:2007-7-11 14:37 Wednesday
分类:PHP&MySql
标签: html javascript 数据结构 算法 php 数据库
php的round四含五入问题
作者:大鹏 发布于:2007-6-6 16:34 Wednesday
分类:PHP&MySql
标签: 算法 php
PHP农历日历
作者:大鹏 发布于:2007-3-25 12:00 Sunday
分类:PHP&MySql
标签: 算法 php
今天下午考的软件设计师的一道Java题
作者:大鹏 发布于:2006-11-4 20:13 Saturday
分类:考试相关
标签: java 算法
代码:
用javascript函数PHP语法加亮
作者:大鹏 发布于:2006-9-25 12:17 Monday
分类:JavaScript与HTML
标签: html javascript 算法 php
DES算法
作者:大鹏 发布于:2006-9-24 11:29 Sunday
分类:考试相关
标签: 算法
[color=#003399][b]1 简介[/b][/color]
DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色[10]。
DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。
C语言-数据结构算法-快速排序、插入排序和选择排序
作者:大鹏 发布于:2006-9-23 18:39 Saturday
分类:考试相关
标签: 数据结构 算法
排序基本算法思想:通过一次分割,将无序序列分成两部分,其中前一部分的元
素值均不大于后一部分的元素值。然后对每一部分利用同样的方法进行分割,这
个过程一直做到每一个子序列的长度小于某个值m为止。
对序列p的分割过程: 首先,在序列的第一个、中间一个及最后一个元素中
选取中项,得p(k),然后设置两个指针i和j分别指向序列的起始和最后的位置.