java的农夫养牛_面试题:农夫养牛问题

:public class Main {|@|      |@|      static Map map = new ConcurrentHashMap();|@|      |@|      static int count = 2; |@|      |@|      public static void main(String[] args) {|@|            map.put(1,new Cattle(1,true));|@|            int year = 6;|@|            for(int i=0;i=3 && cattle.getAge()<=10 && cattle.isSex()){|@|                              map.put(count, new Cattle(0,new Random().nextInt(100)<50));|@|                              count ++ ;|@|                        }|@|                  }|@|            }|@|            System.out.println(map.size());|@|      }|@|}|@|class Cattle{|@|      |@|      private int age;|@|      |@|      private boolean sex;//true为母牛|@||@|      public Cattle(int age, boolean sex) {|@|            super();|@|            this.age = age;|@|            this.sex = sex;|@|      }|@||@|      public int getAge() {|@|            return age;|@|      }|@||@|      public void setAge(int age) {|@|            this.age = age;|@|      }|@||@|      public boolean isSex() {|@|            return sex;|@|      }|@||@|      public void setSex(boolean sex) {|@|            this.sex = sex;|@|      }|@|      |@|}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
农夫过河问题一个经典的逻辑智力游戏,通常涉及到一位农夫要将一只狼、一只羊和一颗白菜带到河的对岸,但是他只有一艘船,船只能容纳他和另外一样物品(不包括船)。 在这个游戏农夫必须遵循以下规则: 1. 农夫可以驾驶船只过河,但是他必须在船上才能移动。 2. 狼和羊不能被留在一起,因为狼会吃羊。 3. 羊和白菜也不能被留在一起,因为羊会吃白菜。 你可以使用C语言来解决这个问题,下面是一个简单的程序实现: ```c #include <stdio.h> int main() { int farmer = 1, wolf = 1, goat = 1, cabbage = 1; // 1表示在左岸,0表示在右岸 printf("农夫过河问题解决方案:\n"); while (wolf || goat || cabbage) // 如果有任意一个在左岸,则继续循环 { if (farmer == 1) // 如果农夫在左岸 { if (wolf == 1 && goat == 1 && cabbage == 1) // 如果狼、羊、白菜都在左岸 { printf("农夫带着羊过河\n"); goat = 0; } else if (wolf == 1 && goat == 1 && cabbage == 0) // 如果狼、羊在左岸,白菜在右岸 { printf("农夫带着狼过河\n"); wolf = 0; } else if (wolf == 1 && goat == 0 && cabbage == 0) // 如果狼在左岸,羊、白菜在右岸 { printf("农夫带着羊过河\n"); goat = 1; } else if (wolf == 0 && goat == 1 && cabbage == 0) // 如果狼在右岸,羊、白菜在左岸 { printf("农夫带着白菜过河\n"); cabbage = 1; } else if (wolf == 0 && goat == 0 && cabbage == 1) // 如果狼、羊在右岸,白菜在左岸 { printf("农夫带着羊过河\n"); goat = 1; } } else // 如果农夫在右岸 { if (wolf == 0 && goat == 0 && cabbage == 0) // 如果狼、羊、白菜都在右岸 { printf("农夫带着狼过河\n"); wolf = 1; } else if (wolf == 0 && goat == 0 && cabbage == 1) // 如果狼、羊在右岸,白菜在左岸 { printf("农夫带着白菜过河\n"); cabbage = 0; } else if (wolf == 0 && goat == 1 && cabbage == 1) // 如果狼在右岸,羊、白菜在左岸 { printf("农夫带着狼过河\n"); wolf = 1; } else if (wolf == 1 && goat == 0 && cabbage == 1) // 如果狼、白菜在左岸,羊在右岸 { printf("农夫带着羊过河\n"); goat = 0; } else if (wolf == 1 && goat == 1 && cabbage == 0) // 如果狼在左岸,羊、白菜在右岸 { printf("农夫带着狼过河\n"); wolf = 0; } } farmer = 1 - farmer; // 农夫过河 } printf("农夫成功将狼、羊、白菜都带到了对岸!\n"); return 0; } ``` 在这个程序,我们使用了四个变来表示农夫、狼、羊、白菜的位置(1表示在左岸,0表示在右岸)。我们使用一个while循环,只要有任意一样物品在左岸,就继续循环。 在while循环,我们根据当前的物品位置和农夫的位置,判断应该带哪一样物品过河。当农夫过河后,我们更新物品位置和农夫位置。当狼、羊、白菜都在右岸时,我们跳出循环,输出“农夫成功将狼、羊、白菜都带到了对岸!”。 这个程序只是一个简单的实现,可能存在一些小bug,但是它可以帮助你理解农夫过河问题的解决方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值