Есть 12 шаров, 11 одинаковых, 12-й либо тяжелее, либо легче (это неизвестно) Есть весы, которые бывают в 3-х положениях "больше", "меньше" и "поровну" Есть 3 взвешивания, которые можно сделать Необходимо определить какой из шаров - имеет аномальную массу
12 шаров в 2 кучи=1 куча тяжелей берем тяжелую кучу и взвешиваем по 2, пока один из них не окажется тяжелей...
1. делим 12 пополам взвешиваем .... выбераем более тяжелую партию шаров 2. делим 6 пополам взвешиваем .... выбераем более тяжелую партию шаров 3. берем 2 любых из 3 оставшихся и взвешиваем ... если равны то аномальный тот который не взвешивали ... иначе тот который тяжелее на весах
Взвешиваем по 4 шара, если они равны значит нужный нам шар в остальных 4ех шарах. Далее взвешиваем из остальных 4ех шаров, - 2 шара. Если они тоже равны значит взвешиваем из оставшихся 2ух шаров один из оставшихся и другой любой из гриуппы которая показала равность. Если равно, значит аномальный шар находится в оставшихся шарах. Если первое не равно показало, то взвешиваем 5 шаров из 8ми не равных и один шар из оставшихся не взвешиваемых. Если результат дал равно, то из той группы которую вервый раз взвешивали убираем шары которые второый раз взвешивали и взвешиваем их. Взвешиваем один шар из этой группы и другой шар любой из той группы которую мы не взвешивали. Если они равны значит шар который нам нужен это тот, который мы не взвешивали в 1ый и во 2ой раз.
Примерно так: Code: int BALL1 = 4; int BALL2 = 4; int BALL3 = 4; int BALL4 = 4; int BALL5 = 4; int BALL6 = 4; int BALL7 = 4; int BALL8 = 4; int BALL9 = 4; int BALL10 = 4; int BALL11 = 4; int BALL12 = 5; if ((BALL1 + BALL2 + BALL3 + BALL4) == (BALL5 + BALL6 + BALL7 + BALL8)) { if (BALL9 == BALL10) { if (BALL11 == BALL4) Console.WriteLine("Аномальный шар BALL12"); else Console.WriteLine("Аномальный шар BALL11"); } else { if (BALL9 == BALL4) Console.WriteLine("Аномальный шар BALL10"); else Console.WriteLine("Аномальный шар BALL9"); } } else { if ((BALL1 + BALL2 + BALL5) == (BALL3 + BALL6 + BALL9)) { if (BALL8 == BALL9) Console.WriteLine("Аномальный шар BALL4"); else Console.WriteLine("Аномальный шар BALL8"); } else { if (BALL3 == BALL9) Console.WriteLine("Аномальный шар BALL5"); else Console.WriteLine("Аномальный шар BALL3"); } }
имхо1 надо опираться не на массу, а на "не аномальные шары" например взвешиваем 4 и 4 => если анамальный тут то другие 4 шара равные и с помошью них можно найти анамальный шар если анамального нет то 8 шаров одинаковые тут ещё проще только меньше 4 взвесов не выходит имхо2 там какая то хитрая комбинация 5-5-2 или 6-4-2 хз надо подумать //add UnDRaux, .Slip читайте внимательно задание
UnDRaux, там не сказано что аномальный шар тяжелее. Он может быть и легче. Great_man, нет, ты изначально определил в программе что 12й шар аномальный. Сам для себя. Попробуй сделать ввод значений шаров с клавиатуры, и увидишь как алгоритм не найдёт нужный шар.