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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© toypaoa 中级黑马   /  2015-10-16 20:40  /  285 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

农夫有 猫 狗 鱼三个动物,要用船过河,每次运一个动物,狗吃猫,猫吃鱼,要怎么样才能过河呢?通过集合体现

package it.heima.list;

import java.lang.Thread.State;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.tree.DefaultTreeCellEditor.EditorContainer;
import javax.xml.stream.events.EntityDeclaration;

public class ListDemo {
        ArrayList<String> startList = new ArrayList<>();
        ArrayList<String> endList = new ArrayList<>();

        public ListDemo() {
                startList.add("fish");
                startList.add("cat");
                startList.add("dog");
        }

        public static void main(String[] args) {
                ListDemo demo=new ListDemo();
                demo.toTake();
        }

        public boolean isSafe(ArrayList<String> list) {
                boolean flag = true;
                if (list.contains("cat") && list.contains("fish") || list.contains("cat") && list.contains("dog")) {
                        flag = false;
                }
                return flag;
        }

        public boolean isEmpty(ArrayList<String> list) {
                return list.isEmpty();
        }

        public void toTake() {
                String animal = startList.get(0);
                startList.remove(0);
                if (isSafe(startList)) {
                        toThere(animal);
                } else {
                        startList.add(animal);
                        toTake();
                }
        }

        public void toThere(String animal) {
                endList.add(animal);
                System.out.println("农夫带着"+animal+"过河了");
                System.out.println("河这边还有"+startList);
                System.out.println("过河了的有"+endList);
                if(isEmpty(startList)){
                        System.out.println("动物都过河了");
                        return;
                }
               
                if(isSafe(endList)){
                       
                        toTake();
                }else{
               
                        String s=endList.get(0);
                        endList.remove(0);
                        if(isSafe(endList)){
                                System.out.println("农夫带着"+s+"回到了这边");
                                startList.add(s);
                                toTake();
                        }else{
                                toThere(s);
                        }
                }               
        }
}


3 个回复

倒序浏览
很好,很实用!!!
回复 使用道具 举报
直接拿走用了。哈哈谢谢
回复 使用道具 举报
直接拿走用了。哈哈谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马