根据判断9个球称重找出重量不同的球而写的判断语句。希望有高手能优化,谢谢~!

TLJewel 2010-05-26 03:04:23
有9个外观相同的球,其中一个重量不同,有一个天平,要求至多3次称重,找到重量不同的球,请给出称重方法!

刚从Java区看到的一个面试题,就试着自己写了个小程序。水平有限,希望能学到更好的方法。

题目答案:
一、将球分成A、B、C三组,先A组和B组比。

二、如果A组和B组相等,说明在C组中,然后A组和C组比较,如果A组重,说明不同的球是轻,如果A组轻,说明不同的球重,然后再 从C组中取出两个球,如果相等则是另一个,如果不相等,则根据前面判断的不同的球是轻还是重判断是C组中的哪一个。

三,如果A组和B组不相等,说明在A组或B组中,然后A组和C组比较,
如果A组比C组重,则说明不同的球是比较重,而且不同的球在A组中,
如果A组比C组轻,则说明不同的球是比较轻,而且在不同的球A组中。
然后比较A组中的任意两个球,如果相等说明是另外一个,如果不相等根据谁轻谁重判断哪个球是;
如果A组和C组相等,说明不同的球在B组中,而且因为A和B相比过,如果A比B重,说明不同的那个球是轻,如果A比B轻,说明不同的那个球是轻,因为确定了不同的球是轻还是重,就可以比较B组中的任意两球,如果相等,说明另外一个球是,如果不相等可以根据不同的球是轻还是重,确定哪个球是不同的。

根据l759171529的答案写的程序。见2楼。
...全文
509 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
libinlink 2010-05-26
  • 打赏
  • 举报
回复
这种题考的是思路、方法

不是编程


你的文字描述已经够了。
tashiwoweiyi 2010-05-26
  • 打赏
  • 举报
回复
mohugomohu 2010-05-26
  • 打赏
  • 举报
回复
这个明显是应该用递归啊,不用一个个判断啊!
TLJewel 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 takako_mu 的回复:]

如果老闆讓你判斷999個球,你這樣寫估計得累死...
[/Quote]

额,是的~!
takako_mu 2010-05-26
  • 打赏
  • 举报
回复
如果老闆讓你判斷999個球,你這樣寫估計得累死...
TLJewel 2010-05-26
  • 打赏
  • 举报
回复

class Program
{
static void Main(string[] args)
{
int a1 = 1;
int a2 = 1;
int a3 = 1;
int a4 = 1;
int a5 = 1;
int a6 = 1;
int a7 = 1;
int a8 = 1;
int a9 = 1;

int GroupA = a1 + a2 + a3;
int GroupB = a4 + a5 + a6;
int GroupC = a7 + a8 + a9;

//开始比较
if (GroupA != GroupB)
{
//先比较A组和B组:A组重。
if (GroupA > GroupC)
{
//说明球比较重
if(a1>a2)
Console.WriteLine("a1球有问题,偏重");
else if(a1<a2)
Console.WriteLine("a2球有问题,偏重");
else
Console.WriteLine("a3球有问题,偏重");

}
else if (GroupA < GroupC)
{
//说明球比较轻
if (a1 < a2)
Console.WriteLine("a1球有问题,偏轻");
else if (a1 > a2)
Console.WriteLine("a2球有问题,偏轻");
else
Console.WriteLine("a3球有问题,偏轻");
}
//比较B组
else if (GroupA < GroupB )
{
//说明球比较重:这里测试的A组大于B组是第一次称重的结果
if (a4 > a5)
Console.WriteLine("a4球有问题,偏重");
else if (a4 < a5)
Console.WriteLine("a5球有问题,偏重");
else
Console.WriteLine("a6球有问题,偏重");

}
else if (GroupA > GroupB)
{
//说明球比较轻:这里测试的A组小于B组是第一次称重的结果
if (a4 < a5)
Console.WriteLine("a4球有问题,偏轻");
else if (a4 > a5)
Console.WriteLine("a5球有问题,偏轻");
else
Console.WriteLine("a6球有问题,偏轻");
}
}
else
{
//先比较A组和B组:A组重。
if (GroupA < GroupC)
{
//说明球比较重
if (a7 > a8)
Console.WriteLine("a7球有问题,偏重");
else if (a7 < a8)
Console.WriteLine("a8球有问题,偏重");
else
Console.WriteLine("a9球有问题,偏重");

}
else if (GroupA > GroupC)
{
//说明球比较轻
if (a7 < a8)
Console.WriteLine("a7球有问题,偏轻");
else if (a7 > a8)
Console.WriteLine("a8球有问题,偏轻");
else
Console.WriteLine("a9球有问题,偏轻");
}
}

Console.ReadKey();

}
}

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧