【解析】 把猪分成7组,前六组每组6只,第七组2只。 七组分别标记为a、b、c、d、e、f、g。
1~6步:让前六组先跑,每组第一名留下设为a1、b1、c1、d1、e1、f1并把每组的第一名好标记如aMax、bMax等。
7让每组第一名共六只赛跑,把前三名留下,假设分别为max1、max2、max3。
8将前面的三只猪和第七组的两只猪一起进行赛跑选出最快的三只猪即为这38只猪中最快的三只猪
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _01三十八只猪
{
class Program
{
/*38只猪要选出3只跑得最快的但场地只答应6只同时赛跑。
* 问在没有计时器的情况下怎样可以用最快、最好的方法选出最快的3只猪
* 假设每只猪速度一定且不受体力影响。*/
static void Main(string[] args)
{
//将38只猪分成7组
int[] a = { 1, 2, 3, 4, 5, 6 };
int[] b = { 7, 8, 9, 10, 11, 12 };
int[] c = { 13, 14, 15, 16, 17, 18 };
int[] d = { 19, 20, 21, 22, 23, 24 };
int[] e = { 25, 26, 27, 28, 29, 30 };
int[] f = { 31, 32, 33, 34, 35, 36 };
int[] g = { 37, 38 };