編程題目集 7-9用天平找小球(C++語言實(shí)現(xiàn)))
摘要本文是一道經(jīng)典編程題的題解題目要求從三個(gè)重量不同的球中找出唯一重量不同的那個(gè)球并給出了易于理解的 C 代碼實(shí)現(xiàn)。題目描述三個(gè)球A、B、C大小形狀相同且其中有一個(gè)球與其他球重量不同。要求找出這個(gè)不一樣的球。輸入格式輸入在一行中給出3個(gè)正整數(shù)順序?qū)?yīng)球A、B、C的重量。輸出格式在一行中輸出唯一的那個(gè)不一樣的球。輸入樣例1 1 2輸出樣例C代碼部分實(shí)現(xiàn)#includeiostream// 引入標(biāo)準(zhǔn)輸入輸出頭文件usingnamespacestd;intmain(void)// 主函數(shù){inta,b,c;// 定義三個(gè)球的重量變量cinabc;// 讀入三個(gè)球的重量// 核心邏輯三個(gè)球中只有一個(gè)重量不同利用兩兩比較來定位// 如果A和B重量相同那么C必然是與它們不同的那個(gè)球if(ab){coutCendl;}// 走到這里說明A和B不同再判斷A和C是否相同// 如果A和C重量相同那么B就是唯一不同的那個(gè)球elseif(ac){coutBendl;}// 前兩個(gè)條件都不滿足A不等于B且A也不等于C// 這意味著A與另外兩個(gè)球都不同A就是那個(gè)唯一重量不同的球else{coutAendl;}return0;// 返回0表示程序正常結(jié)束}算法核心思路本題利用排除法思想通過兩兩比較即可定位唯一重量不同的球。首先比較A和B——若相等則C必然不同若不等則再比較A和C——若相等則B不同否則A不同。整個(gè)過程只需兩次比較時(shí)間復(fù)雜度為O(1)是解決三球問題的最高效方案。算法流程圖是否是否開始輸入 a, b, ca b ?輸出 Ca c ?輸出 B輸出 A結(jié)束