汽车的颜色

时间:2011-04-10 22:39:57

标签: algorithm

你能否给我一个如何解决这个问题的提示?

如果我可以使用的唯一功能是检查两辆车是否有相同的颜色,我怎样才能知道大多数汽车是否有相同的颜色?

2 个答案:

答案 0 :(得分:7)

通过相等,您可以先build equivalence个类,然后计算最大的一个。

答案 1 :(得分:0)

您可以创建一个“列表”,其中汽车的颜色是关键值,它会计算您拥有的那种颜色的汽车数量并存储该颜色的汽车。

它是这样的:

您将拥有此字段的结构:

struct color
  car *car_with_color = NULL
  int count = 0

所以你去第一家汽车店它的颜色并添加1:

color[1].car_with_color=&cars[1];
color[1].count=1;

然后你会做下一辆车:

if (cars[2].color == color[1].car_with_color->color)
  color[1].count++;
else
  color[2].car_with_color=&cars[2];
  color[2].count=1;

等等:

for (i=1;i<=NUM_OF_CARS;i++){
  j=1;
  while (color[j].car_with_color != NULL){
    if (cars[i].color == color[j].car_with_color->color){
      color[i].count++;
      break;
    }else 
      j++;
  }
  if (color[j].car_with_color == NULL){
    color[j].car_with_color=&cars[i];
    color[j].count=1;
   }
 }

它是用C类似的伪代码编写的。