A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张东贤 中级黑马   /  2013-3-21 01:26  /  1439 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张东贤 于 2013-3-21 12:56 编辑

老伯伯要带鱼、狗、猫过河到
对岸.,有一条船,只能坐一个人,
老伯每次只能带一样动物过河,当
老伯不在的时侯狗会咬猫,猫会吃
鱼.,请问怎么顺序过河呢?要求:编
写程序,由程序来推出过河的顺序

这怎么用对象来搞啊??



谢谢,有想法了,稍后贴代码

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-21 10:40

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

正序浏览
陈团辉 发表于 2013-3-21 08:52

这个跟百度的一模一样,就是改了一下名字!靠!
回复 使用道具 举报
  1. import java.util.Iterator;
  2. import java.util.LinkedList;

  3. public class AcrossTheRiver {
  4. // 定义三个String对象
  5. public static final String rabbitName = "Rabbit";
  6. public static final String wolfName = "Wolf";
  7. public static final String cabbageName = "Cabbage";

  8. // 判断两个货物之间关系是否友好 写的麻烦了一点= =..
  9. public static boolean isFriendly(Goods goods1, Goods goods2) {
  10. if (goods1 != null) {
  11. if (goods1.getGoodsName().trim().equals(rabbitName)) {
  12. if (goods2 == null) {
  13. return true;
  14. } else {
  15. return false;
  16. }
  17. } else if (goods1.getGoodsName().trim().equals(wolfName)) {
  18. if (goods2 == null || goods2.getGoodsName().trim().equals(cabbageName)) {
  19. return true;
  20. } else {
  21. return false;
  22. }
  23. } else if (goods1.getGoodsName().trim().equals(cabbageName)) {
  24. if (goods2 == null || goods2.getGoodsName().trim().equals(wolfName)) {
  25. return true;
  26. } else {
  27. return false;
  28. }
  29. } else {
  30. return false;
  31. }
  32. } else {
  33. return true;
  34. }
  35. }

  36. // 我就直接写在主方法里了
  37. public static void main(String[] args) {
  38. boolean isSuccess = false;
  39. LinkedList<Goods> beforeCrossing = new LinkedList<Goods>();
  40. LinkedList<Goods> afterCrossing = new LinkedList<Goods>();
  41. beforeCrossing.add(new Goods(rabbitName));
  42. beforeCrossing.add(new Goods(cabbageName));
  43. beforeCrossing.add(new Goods(wolfName));
  44. while (!isSuccess) {
  45. Goods goods1 = beforeCrossing.getFirst();
  46. System.out.println(goods1.getGoodsName() + " 被取走了");
  47. beforeCrossing.removeFirst();
  48. if (beforeCrossing.isEmpty()) {
  49. afterCrossing.addLast(goods1);
  50. isSuccess = true;
  51. System.out.println("全部移动完毕!");
  52. } else {
  53. Iterator<Goods> it = beforeCrossing.iterator();
  54. Goods[] beforeCro = new Goods[2];
  55. for (int i = 0; it.hasNext(); i++) {
  56. beforeCro[i] = it.next();
  57. System.out.println(beforeCro[i].getGoodsName() + " 留了下来");
  58. }
  59. if (isFriendly(beforeCro[0], beforeCro[1])) {
  60. if (afterCrossing.isEmpty()) {
  61. afterCrossing.addLast(goods1);
  62. System.out.println(goods1.getGoodsName() + " 被成功的放到了对岸");
  63. } else {
  64. Goods goods2 = afterCrossing.getFirst();
  65. if (isFriendly(goods1, goods2)) {
  66. afterCrossing.addLast(goods1);
  67. System.out.println(goods1.getGoodsName() + " 被成功的放到了对岸");
  68. } else {
  69. beforeCrossing.addLast(goods2);
  70. afterCrossing.removeFirst();
  71. System.out.println(goods1.getGoodsName() + " 与 "
  72. + goods2.getGoodsName() + "并不和睦 于是把 " + goods2.getGoodsName()
  73. + "带了回来 并将 " + goods1.getGoodsName() + " 留了下来");
  74. }
  75. }
  76. } else {
  77. beforeCrossing.addLast(goods1);
  78. System.out.println("很可惜 留下来的两个东西并不和睦 于是 " + goods1.getGoodsName()
  79. + " 又被放了回去");
  80. }
  81. }
  82. }
  83. }
  84. }

  85. // 货物类
  86. class Goods {
  87. // 货物名称
  88. private String goodsName;

  89. // 默认构造方法
  90. public Goods(String goodsName) {
  91. this.goodsName = goodsName;
  92. }

  93. // 获得货物名称
  94. public String getGoodsName() {
  95. return goodsName;
  96. }

  97. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
来个不用程序的:
1.先把猫带过去,回来;
2.再把狗带过去,把猫带回来;
3.把鱼带过去,回来;
4.把猫带过去。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马