从1个机器人开始建造200个机器人,怎么样?

时间:2012-09-11 07:55:08

标签: java

我的任务是编写一个以1个机器人开头的代码,我需要知道需要多少个月才能获得200个机器人。

条件:

从1个机器人开始,这个机器人收集材料2个月。使用这些材料,它可以构建3个机器人,每月1个机器人。所以一个机器人的周期是5个月。当然,新建的机器人也会收集材料2个月,然后每个都建立3个机器人,等等......

我唯一的提示是它应该使用3个变量来完成。每个收集月份为2个,每个建筑月份为3个。

这是用Java完成的。提前谢谢!

4 个答案:

答案 0 :(得分:1)

我会以面向对象的方式解决这个问题。

我会使用公共方法workForAMonth()创建一个类Robot,它可能返回一个新的机器人或null。

主循环看起来像那样(伪代码):

 create an empty List of robots
 add one robot to it
 while the list of robots has less than 200 entries
     create a new list of the newly build robots
     iterate the list of existing robots. for each robot:
          call the workForAMonth method. When it returns a robot, append it to the list of newly build robots
     append the newly build robots to the main list
     add 1 to month
 output month

workForAMonth方法如下所示:

 increment the private month counter of this robot by 1
 whe the counter is 5, set it back to 0
 when the counter is 2 or larger, return a new Robot, else return null

答案 1 :(得分:1)

暗示一种可能的方法:

由于此处的最小时间单位为1个月,因此我们有一个时间变量,每次增加1个月。

机器人将做什么取决于他目前在5个月周期的哪个月。 因此,我们会跟踪每个州的机器人数量,

  • 第一个聚会周有多少机器人?
  • 第二个聚会周有多少机器人?
  • 他们的第一个建筑周有多少个机器人?
  • 他们的第二个建筑周有多少机器人?
  • 他们的第三个建筑周有多少机器人?

当一个月过去了,不同州的机器人数量将如何变化?机器人将进入下一个州。可能(取决于他们的状态)他们也将生产一个新的机器人。这个机器人会处于哪种状态?

继续循环,直到你拥有所需数量的机器人。

答案 2 :(得分:0)

既然你根本没有任何线索,我会给你三个提示:

  • 忘掉机器人,物体和编程的东西(至少在开始时),并尝试考虑功能,了解当时机器人的数量
  • 了解递归
  • 了解与您的问题密切相关的 fibbonacci数字

答案 3 :(得分:0)

嗯......解决方案结果非常简单,现在是:

class Robot{
public static void main(String[] args){
    int g1 = 1, g2 = 0, b1 = 0, b2 = 0, b3 = 0, month = 0, tot = 0, left, built;
    while(tot<200){
        month++;
        tot = g1 + g2 + b1 + b2 + b3;
        System.out.println("Month " + month + " materials for " + (g1 + g2) + " robots were gathered and " + (b1 + b2 + b3) + " were built \n");
        System.out.println(" Totally there's " + tot + " Robots on the moon \n \n");
        built = b1 + b2;
        left = b3;
        b3 = b2;
        b2 = b1;
        b1 = g2;
        g2 = g1;
        g1 = (left + built);
    }
}
}