【问题标题】:Cities and colors java城市和颜色java
【发布时间】:2015-03-12 02:10:20
【问题描述】:

问题在于你必须解决一个存在 n-cities 和 n-colors 的问题,每个城市都有一种颜色,但相邻的城市不能有相同的颜色。
老师发这个作业来研究如何解决它,我们正在研究java-eclipse,我们很困惑。你能帮我们说清楚吗,非常感谢。最后一个主题是递归。 P.D:有人说是靠图解决的,但我们不确定,也不是很懂。

【问题讨论】:

  • 如果有n个城市和n种颜色,你就不能把每个城市都涂上不同的颜色吗?
  • 不是因为,有可能存在同色不相邻的城市

标签: java eclipse recursion colors


【解决方案1】:

如果我是你,我会做 2 个循环,一个在另一个里面,像这样:

for (i = 0; i < n_cities; i++)
{
  for (j = 0; j < n_colours; j++)
  {
  }
}

通过这种方式,您将能够走所有可能的组合。在第二个循环中,如果 i 城市周围的城市具有相同的颜色,则必须进行比较,如果没有,请尝试使用下一种颜色,并且对于所有 n 次迭代都是如此。

如何知道相邻城市的颜色是否相同?好吧,您可以创建一个 n 向量,在其中保存所有城市的所有颜色。向量的位置可以是 i-city,保存在位置中的值可以是这个城市的颜色。

我希望它对你有用:)

【讨论】:

    【解决方案2】:

    可能有很多解决方案,但首先想到的是拥有一个包含 CityColor 实例的 ArrayList。我的 CityColor 类包含城市名称和颜色。添加到 ArrayList 时,您将检查以确保 ArrayList 的相邻元素不具有相同的颜色。如果它确实具有相同的颜色,请使用递归选择另一种颜色,直到获得可接受的颜色。

    您的 ArrayList 将包含以下对象:

    public class CityColor {
    
    private String city;
    private String color;
    
    public CityColor(String city, String color) {
        this.city = city;
        this.color = color;
    }
    
    // set/get methods for the variables
    
    }
    

    如果您有一组颜色,则可以使用 Math.Random 来选择随机颜色。如果颜色与相邻颜色匹配,则使用递归选择另一个。

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 2016-08-29
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      相关资源
      最近更新 更多