**:
有十二枚雞蛋,其中一枚壞掉了(重量與其餘不同),現要求用天平稱三次稱出哪個雞蛋是壞的。 解:
首先對於本題,有兩點知識:
知識1:在知道輕重的情況下,一次稱量可以在3個蛋中,確定哪個是壞的。
知識2:在不知道輕重的情況下,一次稱量也可以在2個蛋中,確定哪個是壞的。
對於知識1,隨便拿兩個蛋進行稱量,如果平衡,則第三個蛋是壞的。如果不平衡,那麼根據壞蛋的輕重,也可以判斷這兩個蛋中哪個是壞的。
對於知識2,從已確定是好的蛋中取乙個,和2個待選壞蛋中乙個,進行稱量,如果平衡,那麼這個蛋是好的,另乙個蛋是壞的。如果不平衡,那麼這個蛋是壞的。
(1) 將12個雞蛋編號,然後平均分成三組,記為a,b,c。 a組
①②③④ b組
⑤⑥⑦⑧ c組
⑨⑩⑪⑫
第一次稱量:
將a組在左,b組在右進行稱量。可能出現3種情況: 平衡
左傾 右傾
平衡說明,壞蛋在c組。
左傾或右傾說明,壞蛋在a組或b組。
我先討論平衡的情況,左傾或右傾的情況留在後面討論。
(2)那麼如果第一次稱量平衡的話,進行第二次稱量:
a組的①②③在左,c組的⑨⑩⑪在右,進行稱量。也可能出現3種情況: 平衡
左傾 右傾
如果平衡,那麼可以直接確定,⑫是壞蛋。
如果左傾,那麼可以確定壞蛋是輕的,而且壞蛋就在⑨⑩⑪之中。那麼由知識1可知,再經過一次稱量,就可以確定⑨⑩⑪之中的壞蛋。
如果右傾,參考左傾的情況可知,再經過一次稱量,也可以確定⑨⑩⑪之中的壞蛋。
(3)如果第一次稱量左傾的話,將a組的④和b組的⑧交換,並且將b組的⑤⑥⑦換成⑨⑩⑪。這樣a組就變成了①②③⑧,b組就變成了④⑨⑩⑪。然後進行第二次稱量:
a組在左,b組在右,進行稱量。也可能出現3種情況: 平衡
左傾 右傾
如果平衡,可以確定壞蛋不再在①②③④⑧中,否則這次稱量不能平衡。那麼壞蛋只能在b組中被換掉的⑤⑥⑦中。再根據第一次稱量左傾,可以確定壞蛋是輕的。那麼由知識1可知,再經過一次稱量,就可以確定⑤⑥⑦之中的壞蛋。
如果左傾,首先,壞蛋不能在⑤⑥⑦之中,否則這次稱量就平衡了。再來,壞蛋不能在④⑧之中,否則這次稱量就應當和第一次稱量的傾向相反。所以可以確定壞蛋在①②③之中,而且壞蛋是重的。那麼由知識1可知,再經過一次稱量,就可以確定①②③之中的壞蛋。
如果右傾,由以上的分析,壞蛋只能在④⑧之中,但不知道壞蛋的輕重。沒關係,由知識2,再經過一次稱量,也可以判斷④⑧之中的壞蛋。
(4)如果第一次稱量右傾的話,實際上是和左傾是一組對稱情況,模擬上面左傾的方法,也可以由3次稱量確定①②③④⑤⑥⑦⑧中壞蛋。
經過以上4個步驟,即可以用天平稱三次稱出哪個雞蛋是壞的。
12枚或者13枚雞蛋,有乙個壞的,用
本文 有十二枚雞蛋,其中一枚壞掉了 重量與其餘不同 現要求用天平稱三次稱出哪個雞蛋是壞的。解 首先對於本題,有兩點知識 知識1 在知道輕重的情況下,一次稱量可以在 個蛋中,確定哪個是壞的。知識2 在不知道輕重的情況下,一次稱量也可以在2個蛋中,確定哪個是壞的。對於知識1,隨便拿兩個蛋進行稱量,如果平...
用js如何輸出乙個物件的所有屬性值(迭代 列舉)
陣列和物件是我們平時接觸最多的資料結構,他們各有各的優勢 先建立乙個示例物件 var obj 例如 arr 1 是獲取陣列內下標為1的元素 注意 陣列的下標是從 0 開始的,即下標為 0 元素是陣列的第乙個元素一 object.keys 該方法返回乙個陣列,陣列內包括物件內可列舉屬性以及方法名稱。陣...
演算法 13用乙個棧實現另乙個棧的排序
乙個棧中元素的型別為整型,現在想將該棧從頂到底按從大到小的順序排序,只許申請乙個棧。除此之外,可以申請新的變數,但不能申請額外的資料結構。如何完成排序?第一行輸入乙個n,表示棧中元素的個數 第二行輸入n個整數a iai 表示棧頂到棧底的各個元素 輸出一行表示排序後的棧中棧頂到棧底的各個元素。輸入 5...